当前位置: > > > Swift - 使用AirPrint进行打印

Swift - 使用AirPrint进行打印

使用 AirPrint 可以轻松地从 iOS 和 OS X app 中传输无损照片和文稿打印。当然,打印机也要支持AirPrint 技术才行。下面通过样例演示如何在App中使用 Airprint进行打印。 

1,打印机模拟器(Printer Simulator)下载
如果没有支持AirPrint的打印机也没关系,苹果提供了个虚拟打印机,地址:https://developer.apple.com/downloads

(1)下载里面的 Hardware IO Tools


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


(3)用浏览器打开个网页,使用模拟器打印下看看效果 
如果手机和电脑在同一个网段下,使用手机也是可以找到电脑上的打印机模拟器的。
下面是打印效果,可以看到虚拟打印机生成的是一个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()
    }
}
评论3
  • 3楼
    2016-04-06 21:49
    月影

    “站长回复: 1,打印大小尺寸是根据你的打印机来的
    2,可以设置尺寸(如果打印机支持的话),你需要实现UIPrintInteractionControllerDelegate的printInteractionController:choosePaper方法。
    3,内容可以是html格式,也可以是图片或者pdf”

    站长你好!感谢你的回答,我还有几个问题,
    1.iOS端口只负责发出打印信息,纸张的大小根据打印机默认设置就可以是吗??
    2.内容可以是HTML格式,如果我需要打印的内容中有很多表格,类似报名表单似的东西,这样如何绘制这样的表格??并填写内容啊??给个思路呗
    3.打印机只要支持iPhone打印就可以使用是吗?

    站长回复

    1,是的,如果一定要在程序里指定也是可以的,后面会写篇相关文章。
    2,这个将数据拼成html串就可以了
    3,对

  • 2楼
    2016-04-04 19:53
    月影

    感谢站长的分享,在学习的过程中,我想问一下,打印的内容出来是以A4的纸张大小吗???纸张的大小是否可以设置???还有就是打印的内容是什么格式??HTML文件???

    站长回复

    1,打印大小尺寸是根据你的打印机来的
    2,可以设置尺寸(如果打印机支持的话),你需要实现UIPrintInteractionControllerDelegate的printInteractionController:choosePaper方法。
    3,内容可以是html格式,也可以是图片或者pdf

  • 1楼
    2015-11-13 16:38
    mingricha

    站长效率好高~太感谢了,还有个疑问,这里直接使用UIPrintInteractionController来操作打印,意思就是打印机的连接等设置我直接在系统设置里面做好就行了,不需要再在代码里面再考虑吗?

    站长回复

    是的,打印机连接什么的代码不用写。打印时自动会弹出页面(就是我代码上方的那个截图)让你选择打印机