Module
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
的DocFlavor对象和实际的打印数据,可以采取多种形式,包括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中,方法的空参考参数是不正确的,除非在方法中明确记录为具有有意义的解释。 使用相反的是错误的编码,可能会立即或稍后导致运行时异常。 IllegalArgumentException和NullPointerException是这种情况的典型和可接受的运行时间异常的示例。
- 从以下版本开始:
- 1.4
-
接口摘要 接口 描述 AttributeException Interface AttributeException是一个mixin接口,它可以实现PrintException
的子类来报告一个特定Print Service实例不支持的一个或多个打印属性的错误条件。CancelablePrintJob 此接口由打印应用程序用于取消打印作业。Doc Interface Doc指定为打印作业提供一张打印数据的对象的界面。DocPrintJob 此接口表示可以使用一组作业属性打印指定文档的打印作业。FlavorException 接口FlavorException是一个mixin接口,它可以实现PrintException
的子类来报告涉及doc风格或风格(DocFlavor
类)的错误条件。MultiDoc 界面MultiDoc指定为打印作业提供多个打印数据的对象的接口。MultiDocPrintJob 从MultiDocPrintService获取,MultiDocPrintJob可以将指定的文档集合打印为具有一组作业属性的单个打印作业。MultiDocPrintService Interface MultiPrintService是MultiDocPrintJob的工厂。PrintService Interface PrintService是DocPrintJob的工厂。URIException 接口URIException是一个mixin接口,它可以实现PrintException
的子类来报告涉及URI地址的错误条件。 -
类摘要 Class 描述 DocFlavor DocFlavor
类封装了一个对象,它将打印数据的格式指定给一个DocPrintJob
。DocFlavor.BYTE_ARRAY DocFlavor.BYTE_ARRAY类提供了预定义的静态常量DocFlavor对象,例如使用字节数组(byte[]
)作为打印数据表示类的doc风格。DocFlavor.CHAR_ARRAY DocFlavor.CHAR_ARRAY类提供了预定义的静态常量DocFlavor对象,例如使用字符数组(char[]
)作为打印数据表示类的doc风格。DocFlavor.INPUT_STREAM DocFlavor.INPUT_STREAM类提供了预定义的静态常量DocFlavor对象,例如使用字节流(java.io.InputStream
)作为打印数据表示类的doc风格。DocFlavor.READER DocFlavor.READER类提供了预定义的静态常量DocFlavor对象,例如使用字符流(java.io.Reader
)作为打印数据表示类的doc风格。DocFlavor.SERVICE_FORMATTED DocFlavor.SERVICE_FORMATTED类提供了预定义的静态常量DocFlavor对象,例如用于服务格式化打印数据的doc风格。DocFlavor.STRING DocFlavor.STRING类提供了预定义的静态常量DocFlavor对象,例如使用字符串(java.lang.String
)作为打印数据表示类的doc风格。DocFlavor.URL DocFlavor.URL类提供了预定义的静态常量DocFlavor对象。PrintServiceLookup 该类的实现为特定类型的打印服务(通常相当于打印机)提供查找服务。ServiceUI 该类是UI便利方法的集合,其提供用于浏览通过Java Print Service API查找的打印服务的图形用户对话框。ServiceUIFactory 服务可以可选地提供UI,其允许不同角色的不同风格的交互。SimpleDoc 该类是可以在许多常见打印请求中使用的接口Doc
的实现。StreamPrintService 该类扩展了PrintService
,代表了一种将不同格式的数据打印到客户端提供的输出流的打印服务。StreamPrintServiceFactory AStreamPrintServiceFactory
是StreamPrintService
实例的工厂,可以以描述为MIME类型的特定文档格式打印到输出流。 -
异常摘要 异常 描述 PrintException PrintException类封装了在使用Print Service实例时发生的与打印相关的错误条件。