Airprint是iOS系統自帶的打印服務框架,利用她可以很簡單系統打印服務,打印word,PDF,圖片,也可以打印html網頁。
Dome地址:https://github.com/wyhu/AirPrintDemo
// 打印
-(void)printActionsbutton:(id)sender{
//獲取要打印的圖片
UIImage * scanImage = [self scaleToSize:printImage size:CGSizeMake(595, 1660)];
UIImage *jietuImage = [self imageFromImage:scanImage inRect:CGRectMake(0, 0, 595, 880)];
UIPrintInteractionController *printC = [UIPrintInteractionController sharedPrintController];//顯示出打印的用戶界面。
printC.delegate = self;
if (!printC) {
NSLog(@"打印機不存在");
}
printC.showsNumberOfCopies = YES;
printC.showsPageRange = YES;
NSData *imgDate = UIImagePNGRepresentation(jietuImage);
NSData *data = [NSData dataWithData:imgDate];
NSString *pdf = [[NSBundle mainBundle] pathForResource:@"PDF使用指南.pdf" ofType:nil];
NSData *pdfData = [NSData dataWithContentsOfFile:pdf];
// NSArray *arr = @[data,data];//打印多張圖片
if (printC && [UIPrintInteractionController canPrintData:pdfData]) {
UIPrintInfo *printInfo = [UIPrintInfo printInfo];//準備打印信息以預設值初始化的對象。
printInfo.outputType = UIPrintInfoOutputGeneral;//設置輸出類型。
printC.showsPageRange = YES;//顯示的頁面范圍
printInfo.jobName = @"my.job";
printC.printInfo = printInfo;
//設置打印源文件
printC.printingItem = pdfData;//single NSData, NSURL, UIImage, ALAsset
// 等待完成
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if (!completed && error) {
NSLog(@"可能無法完成,因為印刷錯誤: %@", error);
}
if (completed) {
NSLog(@"完成了");
}else{
NSLog(@"出錯了");
}
};
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:sender];//調用方法的時候,要注意參數的類型-下面presentFromBarButtonItem:的參數類型是 UIBarButtonItem..如果你是在系統的UIToolbar or UINavigationItem上放的一個打印button,就不需要轉換了。
[printC presentFromBarButtonItem:item animated:YES completionHandler:completionHandler];//在ipad上彈出打印那個頁面
} else {
[printC presentAnimated:YES completionHandler:^(UIPrintInteractionController * _Nonnull printInteractionController, BOOL completed, NSError * _Nullable error) {
}];
// [printC presentAnimated:YES completionHandler:completionHandler];//在iPhone上彈出打印那個頁面
}
}
}