Swift - 使用AirPrint进行打印
使用 AirPrint 可以轻松地从 iOS 和 OS X app 中传输无损照片和文稿打印。当然,打印机也要支持AirPrint 技术才行。下面通过样例演示如何在App中使用 Airprint进行打印。
1,打印机模拟器(Printer Simulator)下载
如果没有支持AirPrint的打印机也没关系,苹果提供了个虚拟打印机,地址:https://developer.apple.com/downloads
(1)下载里面的 Hardware IO Tools


(3)用浏览器打开个网页,使用模拟器打印下看看效果



(2)运行工具包里的 Printer Simulator

如果手机和电脑在同一个网段下,使用手机也是可以找到电脑上的打印机模拟器的。
下面是打印效果,可以看到虚拟打印机生成的是一个pdf的文件,这个和实际打印出来的效果是一致的。

2,使用AirPrint打印一段文字
(1)打印时会弹出页面(左图)让你选择打印机,打印份数等。下面会显示预览效果
(2)右图是最终打印出来的文件


import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } @IBAction func printText(sender: AnyObject) { // 打印控制器 let printController = UIPrintInteractionController.sharedPrintController() // 打印任务相关信息 let printInfo = UIPrintInfo(dictionary:nil) printInfo.outputType = UIPrintInfoOutputType.General printInfo.jobName = "my print Job" printController.printInfo = printInfo //设置打印文本 let printText = "<div style='font-size:28px;font-weight:bold;text-align:center'>" + "hangge.com</div>" + "做最好的开发者知识平台" // 格式化打印文本 let formatter = UIMarkupTextPrintFormatter(markupText: printText) // 设置页面Insets边距 formatter.contentInsets = UIEdgeInsets(top: 72, left: 72, bottom: 72, right: 72) printController.printFormatter = formatter // 提供打印界面让用户选择打印机和副本的数量 printController.presentAnimated(true, completionHandler: nil) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
“站长回复: 1,打印大小尺寸是根据你的打印机来的
2,可以设置尺寸(如果打印机支持的话),你需要实现UIPrintInteractionControllerDelegate的printInteractionController:choosePaper方法。
3,内容可以是html格式,也可以是图片或者pdf”
站长你好!感谢你的回答,我还有几个问题,
1.iOS端口只负责发出打印信息,纸张的大小根据打印机默认设置就可以是吗??
2.内容可以是HTML格式,如果我需要打印的内容中有很多表格,类似报名表单似的东西,这样如何绘制这样的表格??并填写内容啊??给个思路呗
3.打印机只要支持iPhone打印就可以使用是吗?
感谢站长的分享,在学习的过程中,我想问一下,打印的内容出来是以A4的纸张大小吗???纸张的大小是否可以设置???还有就是打印的内容是什么格式??HTML文件???
站长效率好高~太感谢了,还有个疑问,这里直接使用UIPrintInteractionController来操作打印,意思就是打印机的连接等设置我直接在系统设置里面做好就行了,不需要再在代码里面再考虑吗?