在JDK 1.4中推出的Java Print Service(JPS)是一个旨在所有Java平台上实现打印功能的API。它包含在JPS之前出现的Java 2 Print API。本文说明客户端和服务器应用程序如何能够定位和选择拥有由适当属性指定的功能的打印机。
在JDK 1.4中推出的Java Print Service(JPS)是一个旨在所有Java平台上实现打印功能的API。它包含在JPS之前出现的Java 2 Print API。本文说明客户端和服务器应用程序如何能够定位和选择拥有由适当属性指定的功能的打印机。
特性
JPS API以JSR 6中描述的统一打印模型为基础。这些API使用在互联网打印协议(IPP)中规定的可扩充的、行业标准的属性集。此协议由互联网工程任务组(IETF)制定。JPS甚至允许你在大小非常有限的平台,如J2ME上进行打印。它还支持标准的Java 2D图形。
JPS最重要的特性有这些:
- Printer Discovery:客户端和服务器应用程序都能对Printer Discovery进行编程,并找到能够以用户指定的属性打印Print Job的打印机。你可以指定一系列的Print Job属性,如面数(单面或双面)、色彩(彩色或单色)、纸张大小(A4、合法纸、信纸等)、Print Job名称(给打印工作命名)等。
- Print Job Attributes as Objects:标准IPP属性设置以对象形式包含在JPS API中。
- Print Job Attribute Classes:应用程序能够扩充JPS API中的属性。
- Service provider Interface(SPI):第三方能够使用SPI(服务提供商界面)插入自己的Print Service(打印服务)。当你使用供应商提供的SPI时,Print Service执行起来才最为高效。
如何组织打印
用JPS API打印包括三个步骤:发现、指定和打印。第四步可选,为在打印任务进行时发出通知。(我在本文中提到的所有类和界面都在javax.print包或它的一个子包中。)
打印工作的第一步是确定你希望执行打印的打印机或打印机组。打印机对象叫做打印服务;确定过程称之为一次查找(lookup)。支持查找任务的类名为PrintServiceLookup。你可以使用下列三种方法中的任何一种:
- lookupDefaltPrintService()返回默认的打印服务。
- lookupPrintService()返回以一组特殊属性(如两面)打印一个特殊文件类型(如PNG或HTML)的打印机组。
- lookupMultiDocPrintService()为一次打印多个文档提供支持。