javax.print

接口
异常
为 Java TM Print Service API 提供了主要类和接口。

请参见:
          描述

接口摘要
AttributeException 接口 AttributeException 是一个混合接口,PrintException 的子类可实现该接口以报告涉及一个或多个打印属性的错误条件,特定的 Print Service 实例不支持该条件。
CancelablePrintJob 打印应用程序使用此接口来取消打印作业。
Doc 接口 Doc 指定某个对象的接口,该接口为 PrintJob 提供部分打印数据。
DocPrintJob 此接口表示了一个可使用作业属性集打印指定文档的打印作业。
FlavorException 接口 FlavorException 是一个混合接口,PrintException 的子类可实现它来报告有关某个 DocFlavor 或多个 DocFlavor(类 DocFlavor)的错误状况。
MultiDoc 接口 MultiDoc 指定某个对象的接口,该对象为 PrintJob 提供多部分打印数据。
MultiDocPrintJob 从 MultiDocPrintService 中获得,MultiDocPrintJob 可使用作业属性集以单个 PrintJob 的形式打印指定的文档集合。
MultiDocPrintService 接口 MultiPrintService 是 MultiDocPrintJob 的工厂。
PrintService 接口 PrintService 是 DocPrintJob 的工厂。
URIException 接口 URIException 是一个混合接口,PrintException 的子类可实现它来报告有关 URI 地址的错误状况。
 

类摘要
DocFlavor DocFlavor 封装了一个对象,该对象指定提供给 DocPrintJob 的打印数据的格式。
DocFlavor.BYTE_ARRAY 类 DocFlavor.BYTE_ARRAY 提供了预定义的静态常量 DocFlavor 对象,例如使用 byte 数组 (byte[]) 作为打印数据表示形式类的 DocFlavor。
DocFlavor.CHAR_ARRAY 类 DocFlavor.CHAR_ARRAY 提供了预定义的静态常量 DocFlavor 对象,例如使用字符数组 (char[]) 作为打印数据表示形式类的 DocFlavor。
DocFlavor.INPUT_STREAM 类 DocFlavor.INPUT_STREAM 提供了预定义的静态常量 DocFlavor 对象,例如使用 byte 流 (java.io.InputStream) 作为打印数据表示形式类的 DocFlavor。
DocFlavor.READER 类 DocFlavor.READER 提供了预定义的静态常量 DocFlavor 对象,例如使用字符流 (java.io.Reader) 作为打印数据表示形式类的 DocFlavor。
DocFlavor.SERVICE_FORMATTED 类 DocFlavor.SERVICE_FORMATTED 提供了预定义的静态常量 DocFlavor 对象,例如用于服务格式化打印数据的 DocFlavor。
DocFlavor.STRING 类 DocFlavor.STRING 提供了预定义的静态常量 DocFlavor 对象,例如使用字符串 (java.lang.String) 作为打印数据表示形式类的 DocFlavor。
DocFlavor.URL 类 DocFlavor.URL 提供了预定义的静态常量 DocFlavor 对象。
PrintServiceLookup 此类的实现为特定类型的 PrintService(通常等效于打印机)提供查找服务。
ServiceUI 此类是各种 UI 便捷方法的集合,这些方法为浏览那些通过 Java Print Service API 所查找的 PrintService 提供了图形用户对话框。
ServiceUIFactory 服务可以可选地提供 UI,这些 UI 允许以不同的角色进行不同风格的交互。
SimpleDoc 此类是接口 Doc 的实现,可用于很多常见的打印请求中。
StreamPrintService 此类扩展了 PrintService 并表示这样一种 PrintService,即以不同的格式向客户端提供的输出流打印数据。
StreamPrintServiceFactory StreamPrintServiceFactoryStreamPrintService 实例的工厂,StreamPrintService 可以 mime 类型所描述的特定文档格式向输出流中打印数据。
 

异常摘要
PrintException 类 PrintException 封装了与打印有关的错误状况,此状况在使用 PrintService 实例时会发生。
 

软件包 javax.print 的描述

为 JavaTM Print Service API 提供了主要类和接口。Java Print Service API 允许客户端和服务器应用程序具备如下功能:

  • 根据其性能发现并选择 PrintService。
  • 指定打印数据的格式。
  • 向支持所打印文档类型的服务提交 PrintJob。

PrintService 发现

应用程序可调用抽象类 PrintServiceLookup 的静态方法来查找 PrintService,这些 PrintService 具有满足应用程序打印要求的功能。例如,要打印双面文档,应用程序首先需要找到具有双面打印功能的打印机。

JDK 包括的 PrintServiceLookup 实现可查找标准的平台打印机。要查找其他类型的打印机(如 IPP 打印机或 JINI 打印机),PrintService 提供者可写入 PrintServiceLookup 实现。PrintService 提供者可使用 SPI JAR 文件规范 动态地安装这些 PrintServiceLookup 实现。

属性定义

javax.print.attributejavax.print.attribute.standard 包定义了打印属性,这些属性描述了 PrintService 的功能、指定 PrintJob 的要求并跟踪 PrintJob 的进度。

javax.print.attribute 包描述了属性类型和属性分类方法。javax.print.attribute.standard 包枚举了 API 所支持的所有标准属性,其中大多数是在 IETF 规范 RFC 2911 Internet Printing Protocol, 1.1:Model and Semantics(2000 年 9 月)中所指定的属性实现。javax.print.attribute.standard 中指定的属性包括常见的功能,如:分辨率、份数、介质大小、作业优先级和页面范围。

文档类型规范

DocFlavor 类表示了打印数据的格式,如 JPEG 或 PostScript。 DocFlavor 对象由 MIME 类型(描述了格式)和文档表示形式类名(指示如何将文档发送到打印机或输出流)所组成。应用程序使用 DocFlavor 和属性集来查找某些打印机,这些打印机可打印由 DocFlavor 所指定的文档类型且具有属性集所指定的功能。

使用 API

典型的应用程序使用 Java Print Service API 执行以下步骤来处理打印请求:
  1. 选择一个 DocFlavor
  2. 创建一个属性集。
  3. 找到一个可处理由 DocFlavor 和属性集所指定的打印请求的 PrintService。
  4. 创建一个 Doc 对象,该对象封装 DocFlavor 和实际的打印数据,这些打印数据可采用很多形式,包括:Postscript 文件、JPEG 图像、URL 或纯文本。
  5. 从 PrintService 获得一个由 DocPrintJob 表示的 PrintJob。
  6. 调用 PrintJob 的 print 方法。
以下代码示例说明了 Java Print Service API 的典型用法:找到可在 A4 大小的纸张上打印 5 份 Postscript 文档双面副本的打印机、根据某个返回的 PrintService 创建 PrintJob 并调用 print 方法。


   
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(MediaSize.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