美文网首页
iOS开发--Airprint

iOS开发--Airprint

作者: 酱油之神 | 来源:发表于2016-09-27 16:54 被阅读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上弹出打印那个页面
            }
    
    }
    }

    相关文章

      网友评论

          本文标题:iOS开发--Airprint

          本文链接:https://www.haomeiwen.com/subject/ctacyttx.html