Module java.desktop

Package javax.print


package javax.print
提供了Java打印服务API的主要类和接口。Java打印服务API使客户端和服务器应用程序能够:
  • 根据其功能发现和选择打印服务
  • 指定打印数据的格式
  • 将打印作业提交给支持要打印文档类型的服务。
应用程序调用抽象类PrintServiceLookup的静态方法来定位具有满足应用程序打印请求能力的打印服务。例如,要打印双面文档,应用程序首先需要找到具有双面打印功能的打印机。

JDK包括可以定位标准平台打印机的PrintServiceLookup实现。要定位其他类型的打印机,例如IPP打印机或JINI打印机,打印服务提供者可以编写PrintServiceLookup的实现。打印服务提供者可以使用ServiceLoader工具动态安装这些PrintServiceLookup实现。

属性定义

javax.print.attributejavax.print.attribute.standard包定义了打印属性,描述了打印服务的功能,指定了打印作业的要求,并跟踪打印作业的进度。

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打印服务API的典型应用程序执行以下步骤来处理打印请求:
  1. 选择一个DocFlavor
  2. 创建属性集。
  3. 定位可以处理由DocFlavor和属性集指定的打印请求的打印服务。
  4. 创建封装DocFlavor和实际打印数据的Doc对象,可以采用多种形式,包括:Postscript文件、JPEG图像、URL或纯文本。
  5. 从打印服务获取由DocPrintJob表示的打印作业。
  6. 调用打印作业的打印方法。
以下代码示例演示了Java打印服务API的典型用法:查找可以在A4纸张上打印五份双面副本的Postscript文档的打印机,从返回的打印服务中创建打印作业,并调用打印。

 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.printAPI中,除非在方法上明确记录了null引用参数具有有意义的解释,否则将其用作参数是不正确的编码,可能会导致运行时异常,可能会立即发生,也可能在以后的某个时间发生。对于这种情况,IllegalArgumentExceptionNullPointerException是典型且可接受的运行时异常示例。

自版本:
1.4
  • Class
    Description
    接口AttributeException是一个混合接口,PrintException的子类可以实现它,以报告特定打印服务实例不支持的一个或多个打印属性的错误条件。
    此接口用于取消打印作业。
    Doc
    接口Doc指定为打印作业提供一份打印数据的对象的接口。
    DocFlavor封装了一个对象,指定了提供给DocPrintJob的打印数据的格式。
    DocFlavor.BYTE_ARRAY提供了预定义的静态常量DocFlavor对象,例如使用字节数组(byte[])作为打印数据表示类的文档格式。
    DocFlavor.CHAR_ARRAY提供了预定义的静态常量DocFlavor对象,例如使用字符数组(char[])作为打印数据表示类的文档格式。
    DocFlavor.INPUT_STREAM提供了预定义的静态常量DocFlavor对象,例如使用字节流(java.io.InputStream)作为打印数据表示类的文档格式。
    DocFlavor.READER提供了预定义的静态常量DocFlavor对象,例如使用字符流(java.io.Reader)作为打印数据表示类的文档格式。
    DocFlavor.SERVICE_FORMATTED提供了预定义的静态常量DocFlavor对象,例如用于服务格式化打印数据的文档格式。
    DocFlavor.STRING提供了预定义的静态常量DocFlavor对象,例如使用字符串(java.lang.String)作为打印数据表示类的文档格式。
    DocFlavor.URL提供了预定义的静态常量DocFlavor对象。
    此接口表示可以使用一组作业属性打印指定文档的打印作业。
    接口FlavorException是一个混合接口,PrintException的子类可以实现它,以报告涉及文档格式或文档格式(类DocFlavor)的错误条件。
    接口MultiDoc指定为打印作业提供多个打印数据的对象的接口。
    MultiDocPrintService获得的MultiDocPrintJob可以将指定的文档集合作为单个打印作业打印,并具有一组作业属性。
    接口MultiPrintServiceMultiDocPrintJob的工厂。
    PrintException封装了在使用打印服务实例时发生的与打印相关的错误条件。
    接口PrintServiceDocPrintJob的工厂。
    此类的实现为特定类型的打印服务(通常等同于打印机)提供查找服务。
    此类是一组UI便利方法的集合,为通过Java打印服务API查找的打印服务提供了用于浏览的图形用户对话框。
    服务可以选择提供允许在不同角色中进行不同样式交互的UI。
    此类是接口Doc的实现,可用于许多常见的打印请求。
    此类扩展了PrintService,表示将以不同格式将数据打印到客户端提供的输出流的打印服务。
    StreamPrintServiceFactoryStreamPrintService实例的工厂,可以打印到以mime类型描述的特定文档格式的输出流。
    接口URIException是一个混合接口,PrintException的子类可以实现它,以报告涉及URI地址的错误条件。