5 苹果开发人员技术文档连载之-系统架构( 四 )


·作业券(Job ticket) 包含所有控制打印作业所必需要的参数 。由应用服务框架中的打印功能来控制作业券的创建 。在打印过程的每一个步骤中,特定组件会更新作业券的状态 。

打印机搜索

在用户选择打印机之前,打印中心必须首先列出有效的打印机 。通过打印中心查找可用打印机的过程被称为“打印机搜索” 。

在打印机搜索过程中,打印中心列举出所有安装在/System/Library/Printers和/Library/Printers目录中的I/O模块和打印机浏览器模块 。打印服务器把从打印浏览器模块中得到的对不同连接类型的字符串描述传递给打印中心,打印中心则把这些字符串显示在关于连接类型的弹出式菜单中 。

当用户选择一个连接类型时,打印中心列出所有安装在/System/Library/Printers和/Library/Printers目录中的打印模块,并询问每个打印机模块是否支持用户所选择的连接类型 。如果支持的话,打印中心会从中查找信息 。在搜索被支持连接类型的打印机时,打印机浏览器模块使用此信息作为搜索标准,并且在屏幕上显示这些信息 。

当用户点击某个打印机,以把它添加到打印机列表中时,打印中心从打印机浏览器模块中得到该打印机的地址、图标和打印机模块信息 。接着,打印中心使用此信息来生成一个新的打印队列,并将该打印机添加到列表中 。

打印过程

一个应用程序把关于一个打印作业的信息存储在一个或多个打印对象中 。打印对象包含了关于打印作业的信息,例如纸张大小和纸张来源,并且用于给打印服务器传送信息 。打印系统提供了对默认的打印对象进行访问的功能,并可由应用程序对该打印对象进行修改 。页面设置和打印对话框使用打印对象来获取对当前打印作业的用户设置 。

在用户需要打印时,应用程序会显示页面设置和打印对话框 。应用程序使用了Carbon框架中的函数以显示这些对话框 。Carbon应用程序能够利用打印对话框扩展(PDF)来扩展对话框 。打印对话框扩展让Carbon应用程序可以定义一些可选项目,用于指定应用程序的绘画环境,例如自定义页面布局 。

当用户关闭打印对话框时,应用程序服务器框架从应用程序处接收绘画命令(QuickDraw、Core Graphics或一个 PDF文件),并把它们放入脱机文件 。应用程序把脱机文件连同打印对象一起传递给打印系统 。在获得应用程序数据之前,打印系统生成作业券以管理打印作业的设置和状态,然后把作业券连同脱机文件一起传送给打印服务器 。打印服务器再把数据传送给打印作业管理器,由它对余下的打印过程进行管理 。在把作业传送给打印服务器之前,应用程序已经完成了在整个打印过程中它所应负责的那部分工作 。所有与打印作业有关的错误都会被异步传送回打印中心,以反馈给用户 。

打印作业管理器首先查阅作业券以确定目标打印机,并询问目标打印机的相关打印模块,以找出它所要求的数据格式 。如果有需要,打印作业管理器使用转换器来把所导入数据转换为目的打印模块所能接受的数据格式 。接着,打印作业管理器把数据传送给打印模块,打印模块负责把所导入数据转换成打印机将用于渲染数据的原始命令 。最后打印作业管理器从打印模块接收到打印机专有数据,并利用适合打印机连接类型的I/O模块把数据发送给打印机 。

其他应用服务

应用服务层中的其它系统服务,通过提供能影响图形用户界面的各种对象和动作,来支持所有的应用程序环境 。这一节将探讨这些服务的突出特点 。由于Mac OS X的自然演进,应用服务层的组成结构也将会随时间的过去而有所变化 。学习其当前所包含的内容,

推荐阅读