美文网首页
AirPrint:iOS的打印机

AirPrint:iOS的打印机

作者: 小堆同学 | 来源:发表于2016-11-23 13:51 被阅读320次

昨天看到安卓QQ有直接打印资料的功能,看了一下iOS的,没有看到,于是查了一下iOS打印的资料

<h4>原理</h4>
在iOS里边打印主要是用到了UIPrintInteractionController类,这是一个单列类。UIPrintInfo是配置打印信息,UISimpleTextPrintFormatter是设置页面范围。

</br>
<h4>具体实现</h4>

  1. 打印textview文本文字
打印文本
//为打印做准备,创建一个指向sharedPrintController的引用
    UIPrintInteractionController *printer = [UIPrintInteractionController sharedPrintController];
    printer.delegate = self;

    //配置打印信息
    UIPrintInfo *Pinfo = [UIPrintInfo printInfo];
    Pinfo.outputType = UIPrintInfoOutputGeneral;//可打印文本、图形、图像
    Pinfo.jobName = @"Print for xiaodui";//可选属性,用于在打印中心中标识打印作业
    Pinfo.duplex = UIPrintInfoDuplexLongEdge;//双面打印绕长边翻页,NONE为禁止双面
    Pinfo.orientation = UIPrintInfoOrientationPortrait;//打印纵向还是横向
//    Pinfo.printerID = @"";//指定默认打印机,也可以使用UIPrintInteractionControllerDelegate来知悉
    printer.printInfo = Pinfo;

    //设置页面范围
    UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc] initWithText:self.textView.text];
    textFormatter.startPage = 0;//指定从哪一张开始打印0代表第一张
    textFormatter.contentInsets = UIEdgeInsetsMake(36, 36, 36, 36);//72相当于1英寸,这样设置上下左右的边距都为0.5英寸
    textFormatter.maximumContentWidth = 504;//(72x7.5)相当于打印宽度为7英寸
    printer.printFormatter = textFormatter;

    printer.showsPageRange = YES;

    [printer presentAnimated:YES completionHandler:^(UIPrintInteractionController * _Nonnull printInteractionController, BOOL completed, NSError * _Nullable error) {
        if (!completed && error) {
            NSLog(@"Error");
        }
    }];

2.打印渲染的HMTL

打印HTML

注意点:其他都跟打印文本的一样,只不过HTML用到了
UIMarkupTextPrintFormatter。

NSURL *requestURL = [[self.webView request] URL];
NSError *error = nil;
NSString *contentHTML = [NSString stringWithContentsOfURL:requestURL encoding:NSASCIIStringEncoding error:&error];
UIMarkupTextPrintFormatter *textFormmatter = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:contentHTML];

3.打印PDF
PDF说白了就是image,打印PDF就是打印image。

 UIGraphicsBeginImageContext(self.webView.bounds.size);
 [self.webView.layer renderInContext:UIGraphicsGetCurrentContext()];
 UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();
 printer.printingItem = image;

这句话的意思就是拿到要打印的空间的大小,然后将内容转化成image就OK了。

相关文章

  • AirPrint:iOS的打印机

    昨天看到安卓QQ有直接打印资料的功能,看了一下iOS的,没有看到,于是查了一下iOS打印的资料 原理 在iOS里边...

  • iOS打印 AirPrint

    使用iOS AirPrint 让你的APP轻松实现打印功能 1, 什么是AirPrint 其实就是将iOS(iph...

  • iOS AirPrint

    最近做了个小需求,为了以后查阅方便写下这篇文章 主要介绍ios通过wifi连接打印机,调用api打印 苹果内置了p...

  • AriPrint

    参考文档1参考文档2目前多数打印机已经可以支持苹果的AirPrint功能,刚完成的项目使用的打印机自身有相应的SD...

  • iOS打印 AirPrint

    使用iOS AirPrint 让你的APP轻松实现打印功能 2016/05/13 · iOS开发 · 打印分享到:...

  • iOS开发--Airprint

    Airprint是iOS系统自带的打印服务框架,利用她可以很简单系统打印服务,打印word,PDF,图片,也可以打...

  • iOS打印 AirPrint 及 普通打印机如何适配

    1.什么是AirPrint AirPrint是可以让应⽤用软件通过Apple的⽆无驱动程序打印体系结构,创建⽆无损...

  • iOS 后台无UI交互打印

    iOS airPrint有交互打印http://www.jianshu.com/p/f5863a1833d0 需求...

  • 打印机

    iOS开发之蓝牙/Socket链接小票打印机(一)iOS开发之蓝牙/Socket链接小票打印机(二) iOS so...

  • iOS 打印 AirPrint无线打印

    主要功能:使用iPhone、PC连接同一个WiFi,iPhone 上App有打印功能,点击打印,实现打印文档功能。...

网友评论

      本文标题:AirPrint:iOS的打印机

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