云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 在iOS上使用AirPrint实现无线打印功能

在iOS上使用AirPrint实现无线打印功能

  • 62 次阅读
  • 3 次下载
  • 2025/5/30 18:12:47

内容

1, 什么是AirPrint

?

其实就是将iOS(iphone,ipad)上的内容,使用支持AirPrint的打印机打印出来。打印过程无线控制,非常方便。 2, 第一手资料

?

学习iOS, 第一手资料肯定非苹果官方文档莫属.

here。(我下面叙述的内容基本上是对文档的总结,英语可以的建议直接看文档。。。)

3, Printer Simulator,使用打印模拟器进行测试

?

既然涉及打印功能,那么就需要有一台支持AirPrint功能的打印机进行测试喽,你没有?没关系!苹果已经为我们准备好了模拟器。这个模拟器在Xcode中没有,需要自己到官网下载:

下载Printer Simulator (需要先注册登录)

4, 了解一下AirPrint可以打印的内容

1. an array of ready-to-print images and PDF documents: 一组图片文件和PDF文件。 2. a single image or PDF document:一张图片或是一个pdf文件。、

3. an instance of any of the built-in print formatter classes: 打印格式化者的实例。(简单文本,html文档,某些View显示的内容)。 4. a custom page renderer:自定义页渲染者。

注释: 1,2 很简单,就不详细解释了,3,4姑且这样翻译了,不懂没关系,继续向下看。。。 5, 关于AirPrint的API

?

AirPrint的api包含 eight classes and one protocol。下图是它们之间的关系。(下面这张图明白了,那你基本就掌握了)。

UIPrintInteractionController属性: 1. UIPrintInfo *printInfo: 打印任务的信息。 2. UIPrintPaper * printPaper : 打印内容的区域。

3. delegate:遵守UIPrintInteractionControllerDelegate协议的代理。

4. 最重要的就是制定需要打印的内容:printingItem,printingItems,printFormatter,printPageRenderer。四个属性都是用来指定要打印的内容的。这四个参数是互斥的,也就是说只要一个赋值,其他三个参数就得是nil. 很容易理解,一个打印任务,不能同时干多个活呀。这里如果使用 swift的枚举,就很容易理解了。 这里提到的四个关于内容的属性,和第4 点是关联起来的。下面这张表是对应关系:

6,打印流程

1. 创建UIPrintInteractionController实例。

2. 创建UIPrintInfo实例。并配置参数 output type(输出类型), print orientation(打印方向), job name(打印工作标识),然后赋值给UIPrintInteractionController实例的printInfo属性。 3. 给delegate 属性赋值,赋的值必须遵守UIPrintInteractionControllerDelegate协议。这个代理可以响应 printing options界面的显示和消失,打印工作的开始和结束等。 4. 指定要打印的内容。也就是指定printingItem,printingItems,printFormatter,printPageRenderer. 参数的其中一个。

5. 当你使用printPageRenderer. 时情况会复杂一些。你可以绘制每一页的header, footer, 内容。这是你需要自己计算页数。另外,你也可以创建一个或多个UIPrintFormatter实例,通过addPrintFormatter:startingAtPageAtIndex: 或者printFormatters参数赋值给printPageRenderer.实例。这种情况下不需要自己计算多少页。 6. 最后就是显示显示出printing options 界面了。方法:

在iPad上: presentFromBarButtonItem:animated:completionHandler: 或者presentFromRect:inView:animated:completionHandler:; 在手机上:presentAnimated:completionHandler:

说了这么多,理论知识就介绍的差不多了,下面通过代码演示具体实现。 7,Printing Printer-Ready Content (打印准备好的内容)

?

AirPrint可以直接打印一些内容。这些内容是NSData, NSURL, UIImage, and ALAsset类的实例,但是这些实例的内容,或者引用的类型(NSURL)必须是 image 或者pdf.

?

对于 image来说,NSData, NSURL, UIImage, and ALAsset类型都可以的。对于PDF,只能使用NSData, NSURL。然后需要将这些数据实例直接赋值给UIPrintInteractionController实例的printingItem或者printingItems属性。

?

打印pdf:

- (IBAction)printContent:(id)sender {

UIPrintInteractionController *pic =

[UIPrintInteractionControllersharedPrintController]; if (pic && [UIPrintInteractionControllercanPrintData: self.myPDFData] ) { pic.delegate = self;

UIPrintInfo *printInfo = [UIPrintInfoprintInfo]; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.jobName = [self.pathlastPathComponent]; printInfo.duplex = UIPrintInfoDuplexLongEdge; pic.printInfo = printInfo; pic.showsPageRange = YES;

pic.printingItem = self.myPDFData; void

(^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) { self.content = nil; if (!completed &&

error) NSLog(@\code %u\

error.domain, error.code);

}; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

[picpresentFromBarButtonItem:self.printButtonanimated:YES completionHandler:completionHandler]; } else {

搜索更多关于: 在iOS上使用AirPrint实现无线打印功能 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

内容 1, 什么是AirPrint ? 其实就是将iOS(iphone,ipad)上的内容,使用支持AirPrint的打印机打印出来。打印过程无线控制,非常方便。 2, 第一手资料 ? 学习iOS, 第一手资料肯定非苹果官方文档莫属. here。(我下面叙述的内容基本上是对文档的总结,英语可以的建议直接看文档。。。) 3, Printer Simulator,使用打印模拟器进行测试 ? 既然涉及打印功能,那么就需要有一台支持AirPrint功能的打印机进行测试喽,你没有?没关系!苹果已经为我们准备好了模拟器。这个模拟器在Xcode中没有,需要自己到官网下载: 下载Printer Simulator (需要先注册登录) 4,

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com