我是iPhone开发的新手,我需要打印UIView.所以我将UIView转换成PDF,它对我来说很好..
但我不知道如何将这个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 //