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上弹出打印那个页面
}
}
}
网友评论