手机连接打印机

作者: 滚滚猫 | 来源:发表于2016-08-19 11:29 被阅读81次

    AirPrint 是可以让应用软件通过 Apple 的无驱动程序打印体系结构,创建无损打印输出的 Apple 技术。所有支持打印的 iOS 内建 app 均使用 AirPrint。

    下面是使用AirPrint的例子,首先要使类实现协议 UIPrintInteractionControllerDelegate

    打印图片

    //打印图片
    - (IBAction)onPrintImage:(id)sender
    {
        //显示出打印的用户界面。
        UIPrintInteractionController *printC = [UIPrintInteractionController sharedPrintController];
        printC.delegate = self;
        //需要打印的图片
        UIImage *img = [UIImage imageNamed:@"login_bg_480"];
        NSData *data = [NSData dataWithData:UIImagePNGRepresentation(img)];
    
        if (printC && [UIPrintInteractionController canPrintData:data]) {
            //准备打印信息以预设值初始化的对象。
            UIPrintInfo *printInfo = [UIPrintInfo printInfo];
            //设置输出类型。
            printInfo.outputType = UIPrintInfoOutputGeneral;
            printC.showsPageRange = YES;//显示的页面范围
        
            //printInfo.jobName = @"willingseal";
            //printC.printInfo = printInfo;
            //NSLog(@"printinfo-%@",printC.printInfo);
    
            printC.printingItem = data;
      
            //等待完成
            void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
        ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
                if (!completed && error) {
                    NSLog(@"可能无法完成,因为印刷错误: %@", error);
                }
            };
        
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
                //调用方法的时候,要注意参数的类型-下面presentFromBarButtonItem:的参数类型是 UIBarButtonItem..如果你是在系统的UIToolbar or UINavigationItem上放的一个打印button,就不需要转换了。
                UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:sender];
                //在ipad上弹出打印那个页面
               [printC presentFromBarButtonItem:item animated:YES completionHandler:completionHandler];
            } else {
                //在iPhone上弹出打印那个页面
                [printC presentAnimated:YES completionHandler:completionHandler];
            }    
        }
    }
    

    打印网页

    // 打印网页
    __weak IBOutlet UIWebView    *nowWebView;
    NSString                     *_currentURL;
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        //加载webView
        NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
        NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:30];
        [nowWebView loadRequest:request];
    }
    
    - (IBAction)onPrintBtn:(id)sender
    {
        //获取当前网页的url
        _currentURL = nowWebView.request.URL.absoluteString;
    
        //显示出打印的用户界面。
        UIPrintInteractionController *printC = [UIPrintInteractionController sharedPrintController];
        printC.delegate = self;
    
        //准备打印信息以预设值初始化的对象。
        UIPrintInfo *printInfo = [UIPrintInfo printInfo];
        //设置输出类型。
        printInfo.outputType = UIPrintInfoOutputGeneral;
        printC.showsPageRange = YES;//显示的页面范围
    
        //打印网页
        [nowWebView loadRequest:[NSURLRequest     requestWithURL:[NSURL URLWithString:self.currentURL]]];
        //布局打印视图绘制的内容。
        printC.printFormatter = [nowWebView viewPrintFormatter];
    
        //等待完成
        void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
            if (!completed && error) {
                NSLog(@"可能无法完成,因为印刷错误: %@", error);
            }
        };
    
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            //调用方法的时候,要注意参数的类型-下面presentFromBarButtonItem:的参数类型是 UIBarButtonItem..如果你是在系统的UIToolbar or UINavigationItem上放的一个打印button,就不需要转换了。
            UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:sender];
            //在ipad上弹出打印那个页面
            [printC presentFromBarButtonItem:item animated:YES completionHandler:completionHandler];
            //第二种方法 在ipad上弹出打印那个页面
            //[printC presentFromRect:CGRectMake(500, 500, 100, 200) inView:self.webView animated:YES completionHandler:completionHandler];
        } else {
            [printC presentAnimated:YES completionHandler:completionHandler];//在iPhone上弹出打印那个页面
        }
    }
    

    打印文本

    __weak IBOutlet UITextField *_textTF;
    - (IBAction)onPtintBtn:(id)sender
    {
        if (_textTF.text.length <= 0) {
            return;
        }
        //显示出打印的用户界面。
        UIPrintInteractionController *printC =     [UIPrintInteractionController sharedPrintController];
        printC.delegate = self;
    
        //准备打印信息以预设值初始化的对象。
        UIPrintInfo *printInfo = [UIPrintInfo printInfo];
        //设置输出类型。
        printInfo.outputType = UIPrintInfoOutputGeneral;
        printC.showsPageRange = YES;//显示的页面范围
    
         //打印文本
         UISimpleTextPrintFormatter *textFormatter =     [[UISimpleTextPrintFormatter alloc]
     initWithText:_textTF.text];
         textFormatter.startPage = 0;
        // 插入内容页的边缘 1 inch margins
         textFormatter.contentInsets = UIEdgeInsetsMake(200, 300, 0, 72.0);
         textFormatter.maximumContentWidth = 16 * 72.0;//最大范围的宽
         printC.printFormatter = textFormatter;
    
    
        //等待完成
        void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
            if (!completed && error) {
                NSLog(@"可能无法完成,因为印刷错误: %@", error);
            }
        };
    
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            //调用方法的时候,要注意参数的类型-下面presentFromBarButtonItem:的参数类型是 UIBarButtonItem..如果你是在系统的UIToolbar or UINavigationItem上放的一个打印button,就不需要转换了。
            UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:sender];
            //在ipad上弹出打印那个页面
            [printC presentFromBarButtonItem:item animated:YES completionHandler:completionHandler];
        } else {
            //在iPhone上弹出打印那个页面
            [printC presentAnimated:YES completionHandler:completionHandler];
        }
    }
    

    参考文档
    http://www.2cto.com/kf/201310/252437.html

    end:小编是很认真的写文哦,如果小编的文对您有用,一定要点“喜欢”哦!如果有问题欢迎评论

    相关文章

      网友评论

        本文标题:手机连接打印机

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