iOS开发--Airprint

2016-09-27  本文已影响185人  酱油之神

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

}
}
上一篇下一篇

猜你喜欢

热点阅读