模块
java.desktop
Package javax.print
提供Java™打印服务API的主要类和接口。
Java Print Service API使客户端和服务器应用程序能够:
- 根据其功能发现并选择打印服务
- 指定打印数据的格式
- 将打印作业提交给支持要打印的文档类型的服务。
打印服务发现
应用程序调用抽象类PrintServiceLookup
的静态方法来定位具有满足应用程序打印请求的功能的打印服务。
例如,要打印双面文档,应用程序首先需要找到具有双面打印功能的打印机。
JDK包括可以定位标准平台打印机的PrintServiceLookup
实现。 要找到其他类型的打印机,例如IPP打印机或JINI打印机,打印服务提供商可以编写PrintServiceLookup
实现。 打印服务提供商可以使用ServiceLoader
工具动态安装这些PrintServiceLookup
实现。
属性定义
javax.print.attribute
和javax.print.attribute.standard
程序包定义打印属性,这些属性描述打印服务的功能,指定打印作业的要求以及跟踪打印作业的进度。
javax.print.attribute
包描述了属性的类型以及如何将它们收集到集合中。 javax.print.attribute.standard
程序包枚举了API支持的所有标准属性,其中大多数是2000年9月IETF规范RFC 2911 Internet Printing Protocol, 1.1: Model and Semantics中指定的属性的实现javax.print.attribute.standard
指定的属性包括常用功能,例如:分辨率,副本,媒体大小,作业优先级和页面范围。
文件类型规格
DocFlavor
类表示打印数据格式,例如JPEG或PostScript。
DocFlavor
对象由描述格式的MIME类型和指示文档如何传递到打印机或输出流的文档表示类名组成。
应用程序使用DocFlavor
和属性集来查找可以打印DocFlavor
指定的文档类型并具有属性集指定的功能的打印机。
使用API
使用Java Print Service API的典型应用程序执行以下步骤来处理打印请求:- 选择
DocFlavor
。 - 创建一组属性。
- 找到可以处理
DocFlavor
和属性集指定的打印请求的打印服务。 - 创建封装
DocFlavor
的Doc
对象和实际打印数据,可以采用多种形式,包括:Postscript文件,JPEG图像,URL
或纯文本。 - 从打印服务获取打印作业,由
DocPrintJob
表示。 - 调用打印作业的打印方法。
FileInputStream psStream; try { psStream = new FileInputStream("file.ps"); } catch (FileNotFoundException ffne) { } if (psStream == null) { return; } DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT; Doc myDoc = new SimpleDoc(psStream, psInFormat, null); PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); aset.add(new Copies(5)); aset.add(MediaSizeName.ISO_A4); aset.add(Sides.DUPLEX); PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, aset); if (services.length > 0) { DocPrintJob job = services[0].createPrintJob(); try { job.print(myDoc, aset); } catch (PrintException pe) {} }
请注意:在javax.print
API中,方法的null
引用参数不正确,除非在方法上明确记录为具有有意义的解释。 相反的用法是不正确的编码,并且可能立即或稍后导致运行时异常。 IllegalArgumentException
和NullPointerException
是此类情况的典型和可接受的运行时异常的示例。
- 从以下版本开始:
- 1.4
-
接口摘要 接口 描述 AttributeException 接口AttributeException
是mixin接口,其中PrintException
的子类可以实现以报告涉及特定Print Service实例不支持的一个或多个打印属性的错误条件。CancelablePrintJob 打印应用程序使用此接口取消打印作业。Doc 接口Doc
指定为打印作业提供一条打印数据的对象的接口。DocPrintJob 此接口表示可以使用一组作业属性打印指定文档的打印作业。FlavorException 接口FlavorException
是mixin接口,PrintException
的子类可以实现该接口以报告涉及doc flavor或flavors的错误条件(类DocFlavor
)。MultiDoc 接口MultiDoc
指定为打印作业提供多个打印数据的对象的接口。MultiDocPrintJob 从获得MultiDocPrintService
,一个MultiDocPrintJob
可打印的文档指定集合为一组工作属性的单一的打印作业。MultiDocPrintService 接口MultiPrintService
是向工厂MultiDocPrintJob
。PrintService 接口PrintService
是向工厂DocPrintJob
。URIException 接口URIException
是mixin接口,PrintException
的子类可以实现该接口以报告涉及URI
地址的错误条件。 -
类摘要 类 描述 DocFlavor 类DocFlavor
封装了一个对象,该对象指定将打印数据提供给DocPrintJob
的格式 。DocFlavor.BYTE_ARRAY 类DocFlavor.BYTE_ARRAY
提供预定义的静态常量DocFlavor
对象,例如使用字节数组(byte[]
)作为打印数据表示类的docbyte[]
。DocFlavor.CHAR_ARRAY 类DocFlavor.CHAR_ARRAY
提供预定义的静态常量DocFlavor
对象,例如使用字符数组(char[]
)作为打印数据表示类的docchar[]
。DocFlavor.INPUT_STREAM 类DocFlavor.INPUT_STREAM
提供了预定义的静态常量DocFlavor
对象,例如使用字节流(java.io.InputStream
)作为打印数据表示类的doc flavor 。DocFlavor.READER 类DocFlavor.READER
提供预定义的静态常量DocFlavor
对象,例如使用字符流(java.io.Reader
)作为打印数据表示类的doc flavor 。DocFlavor.SERVICE_FORMATTED 类DocFlavor.SERVICE_FORMATTED
提供预定义的静态常量DocFlavor
对象,例如用于服务格式化的打印数据的docDocFlavor
。DocFlavor.STRING 类DocFlavor.STRING
提供预定义的静态常量DocFlavor
对象,例如使用字符串(java.lang.String
)作为打印数据表示类的doc flavor 。DocFlavor.URL 类DocFlavor.URL
提供了预定义的静态常量DocFlavor
对象。PrintServiceLookup 此类的实现为特定类型的打印服务(通常等同于打印机)提供查找服务。ServiceUI 此类是UI便捷方法的集合,它提供了一个图形用户对话框,用于浏览通过Java Print Service API查找的打印服务。ServiceUIFactory 服务可以选择性地提供允许不同角色的不同交互方式的UI。SimpleDoc 此类是接口Doc
的实现,可用于许多常见的打印请求。StreamPrintService 此类扩展PrintService
并表示打印服务,该服务以不同格式将数据打印到客户端提供的输出流。StreamPrintServiceFactory StreamPrintServiceFactory
是StreamPrintService
实例的工厂,可以以描述为mime类型的特定文档格式打印到输出流。 -
异常摘要 异常 描述 PrintException 类PrintException
封装了使用Print Service实例时发生的与打印相关的错误情况。