ios – 如何将PDF作为输入传递给打印机

前端之家收集整理的这篇文章主要介绍了ios – 如何将PDF作为输入传递给打印机前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是iPhone开发的新手,我需要打印UIView.所以我将UIView转换成PDF,它对我来说很好..
但我不知道如何将这个PDF传递给打印机以便打印,任何人都可以帮助解决这个问题

提前致谢

我的代码是:

- (void)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName:(NSString*)aFilename
{
    NSMutableData *pdfData = [NSMutableData data];
    UIGraphicsBeginPDFContextToData(pdfData,aView.bounds,nil);
    UIGraphicsBeginPDFPage();
    CGContextRef pdfContext = UIGraphicsGetCurrentContext();
    [aView.layer renderInContext:pdfContext];
    UIGraphicsEndPDFContext();
       NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

    NSString* documentDirectory = [documentDirectories objectAtIndex:0];
    NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:aFilename];
    [pdfData writeToFile:documentDirectoryFilename atomically:YES];
    NSLog(@"documentDirectoryFileName: %@",documentDirectoryFilename);
}

-(void)getPDF{
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,YES); 
     NSString *documentsPath = [paths objectAtIndex:0]; 
     NSString *filePath = [documentsPath stringByAppendingPathComponent:@"myPdf"];
     NSLog(@"filePath: %@",filePath);

     NSData *pngData = [NSData dataWithContentsOfFile:filePath];
    [displayPDFView loadData:pngData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];
    [self.view setBackgroundColor:[UIColor colorWithWhite:0.5 alpha:0.0]];
    displayPDFView.hidden = NO;

}

//打印机代码

NSString *path = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"png"];
    NSData *dataFromPath = [NSData dataWithContentsOfFile:path];

    UIPrintInteractionController *printController = [UIPrintInteractionController sharedPrintController];

    if(printController && [UIPrintInteractionController canPrintData:dataFromPath]) {

        printController.delegate = self;

        UIPrintInfo *printInfo = [UIPrintInfo printInfo];
        printInfo.outputType = UIPrintInfoOutputGeneral;
        printInfo.jobName = [path lastPathComponent];
        printInfo.duplex = UIPrintInfoDuplexLongEdge;
        printController.printInfo = printInfo;
        printController.showsPageRange = YES;
        printController.printingItem = dataFromPath;

        void (^completionHandler)(UIPrintInteractionController *,BOOL,NSError *) = ^(UIPrintInteractionController *printController,BOOL completed,NSError *error) {
            if (!completed && error) {
                NSLog(@"Failed! due to error in domain %@ with error code %u",error.domain,error.code);
            }
        };

        [printController presentFromRect:btnPrint.frame inView:btnPrint.superview
                                animated:YES completionHandler:completionHandler];
    }

解决方法

您可以通过此代码打印pdf ….
#if (READER_ENABLE_PRINT == TRUE) // Option

Class printInteractionController = NSClassFromString(@"UIPrintInteractionController");

if ((printInteractionController != nil) && [printInteractionController isPrintingAvailable])
{
    NSURL *fileURL = document.fileURL; // Document file URL

    printInteraction = [printInteractionController sharedPrintController];

    if ([printInteractionController canPrintURL:fileURL] == YES)
    {
        UIPrintInfo *printInfo = [NSClassFromString(@"UIPrintInfo") printInfo];

        printInfo.duplex = UIPrintInfoDuplexLongEdge;
        printInfo.outputType = UIPrintInfoOutputGeneral;
        printInfo.jobName = document.fileName;

        printInteraction.printInfo = printInfo;
        printInteraction.printingItem = fileURL;
        printInteraction.showsPageRange = YES;

        [printInteraction presentFromRect:button.bounds inView:button animated:YES completionHandler:
            ^(UIPrintInteractionController *pic,NSError *error)
            {
                #ifdef DEBUG
                    if ((completed == NO) && (error != nil)) NSLog(@"%s %@",__FUNCTION__,error);
                #endif
            }
        ];
    }
}

  #endif //
原文链接:https://www.f2er.com/iOS/328181.html

猜你在找的iOS相关文章