模块 java.desktop

接口 PrintService

所有已知的子接口:
MultiDocPrintService
所有已知的实现类:
StreamPrintService

public interface PrintService
接口 PrintServiceDocPrintJob 的工厂。 PrintService 描述了打印机的功能,可以查询打印机支持的属性。

示例:


  DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
  PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
  aset.add(MediaSizeName.ISO_A4);
  PrintService[] pservices =
         PrintServiceLookup.lookupPrintServices(flavor, aset);
  if (pservices.length > 0) {
    DocPrintJob pj = pservices[0].createPrintJob();
    try {
      FileInputStream fis = new FileInputStream("test.ps");
      Doc doc = new SimpleDoc(fis, flavor, null);
      pj.print(doc, aset);
    } catch (FileNotFoundException fe) {
    } catch (PrintException e) {
    }
  }
   
  • 方法详情

    • getName

      String  getName()
      返回此打印服务的字符串名称,应用程序可以使用它来请求特定的打印服务。在适当的上下文中,例如名称服务,此名称必须是唯一的。在某些环境中,此唯一名称可能与定义为 PrinterName 属性的用户友好打印机名称相同。
      返回:
      服务名称
    • createPrintJob

      DocPrintJob  createPrintJob()
      创建并返回一个 PrintJob 能够处理来自任何支持的文档风格的数据。
      返回:
      一个 DocPrintJob 对象
    • addPrintServiceAttributeListener

      void addPrintServiceAttributeListener(PrintServiceAttributeListener  listener)
      为这个 PrintService 上的事件注册一个监听器。
      参数:
      listener - 一个 PrintServiceAttributeListener,用于监视打印服务的状态
      参见:
    • removePrintServiceAttributeListener

      void removePrintServiceAttributeListener(PrintServiceAttributeListener  listener)
      从此打印服务中删除打印服务监听器。这意味着监听器不再对 PrintService 事件感兴趣。
      参数:
      listener - 一个 PrintServiceAttributeListener 对象
      参见:
    • getAttributes

      PrintServiceAttributeSet  getAttributes()
      获取此打印服务的一组打印机描述属性,以提供此打印服务的状态。返回的属性集对象是不可修改的。返回的属性集对象是 getAttributes() 方法调用时此打印服务属性集的“快照”:也就是说,返回的属性集的内容将not如果此打印服务的属性集的内容将来发生变化,则进行更新。要检测属性值的变化,请再次调用getAttributes()并将新属性集与先前的属性集进行比较;或者,为打印服务事件注册一个监听器。
      返回:
      此打印服务的属性集的不可修改的快照。可能为空,但不是 null
    • getAttribute

      <T extends PrintServiceAttribute > T getAttribute(Class <T> category)
      获取单个指定服务属性的值。这对于只需要一个属性的值并希望最小化开销的客户端可能很有用。
      类型参数:
      T - 指定服务属性的类型
      参数:
      category - 此服务支持的 PrintServiceAttribute 类别 - 可能不是 null
      返回:
      支持的属性的值或 null(如果此服务不支持该属性)
      抛出:
      NullPointerException - 如果类别是 null
      IllegalArgumentException - 如果 category 不是实现接口 PrintServiceAttribute Class
    • getSupportedDocFlavors

      DocFlavor [] getSupportedDocFlavors()
      确定客户端在为此 PrintService 设置作业时可以指定的打印数据格式。打印数据格式由“doc flavor”(类 DocFlavor )指定,由 MIME 类型和打印数据表示类组成。

      请注意,某些文档风格可能无法与所有属性结合使用。使用 getUnsupportedAttributes(..) 验证特定组合。

      返回:
      一组支持的文档风格,应该至少有一个元素
    • isDocFlavorSupported

      boolean isDocFlavorSupported(DocFlavor  flavor)
      确定此打印服务是否支持特定的 DocFlavor 。这是确定 DocFlavor 是否是 getSupportedDocFlavors() 结果的成员的便捷方法。

      请注意,某些文档风格可能无法与所有属性结合使用。使用 getUnsupportedAttributes(..) 验证特定组合。

      参数:
      flavor - 查询支持的 DocFlavor
      返回:
      true 如果此打印服务支持指定的 DocFlavorfalse否则
      抛出:
      NullPointerException - 如果 flavornull
    • getSupportedAttributeCategories

      Class <?>[] getSupportedAttributeCategories()
      确定客户端在为此打印服务设置作业时可以指定的打印属性类别。打印属性类别由实现接口 Attribute Class 指定。此方法仅返回属性类别支持的;它不返回特定属性values受支持。

      此方法返回此打印服务支持的所有可能作业的所有打印属性类别。在特定上下文中可能不支持某些类别(即对于特定 DocFlavor )。使用包含 DocFlavor 的方法之一在提交之前验证请求,例如 getSupportedAttributeValues(..)

      返回:
      客户端可以在打印请求中指定为文档级或作业级属性的打印属性类别数组。数组中的每个元素都是一个实现接口 Attribute Class 。如果不支持任何类别,则该数组为空。
    • isAttributeCategorySupported

      boolean isAttributeCategorySupported(Class <? extends Attribute > category)
      确定客户端在为此打印服务设置作业时是否可以指定给定的打印属性类别。打印属性类别由实现接口 Attribute Class 指定。这个方法告诉属性是否category支持;它不会说明特定属性是否value被支持。

      在特定上下文中可能不支持某些类别(即对于特定 DocFlavor )。使用包含 DocFlavor 的方法之一在提交之前验证请求,例如 getSupportedAttributeValues(..)

      这是确定类别是否是 getSupportedAttributeCategories() 结果的成员的便捷方法。

      参数:
      category - 打印属性类别进行测试。它必须是实现接口 Attribute Class
      返回:
      true 如果此打印服务支持在打印请求的 category 中指定文档级或作业级属性; false 如果没有
      抛出:
      NullPointerException - 如果 categorynull
      IllegalArgumentException - 如果 category 不是实现接口 Attribute Class
    • getDefaultAttributeValue

      Object  getDefaultAttributeValue(Class <? extends Attribute > category)
      确定此打印服务在给定类别中的默认打印属性值。打印属性值是实现接口 Attribute 的类的实例。如果客户端设置打印作业但未在给定类别中指定任何属性值,则此打印服务将使用默认属性值。

      在特定上下文中可能不支持某些属性(即对于特定的 DocFlavor )。使用包含 DocFlavor 的方法之一在提交之前验证请求,例如 getSupportedAttributeValues(..)

      并非所有属性都有默认值。例如,服务将没有 RequestingUser 的默认值,即支持类别的 null 返回意味着该类别没有服务默认值。使用isAttributeCategorySupported(Class) 方法来区分这些情况。

      参数:
      category - 打印请求默认属性值的属性类别。它必须是实现接口 Attribute Class
      返回:
      categorynull 的默认属性值,如果此打印服务不支持在打印请求的 category 中指定文档级或作业级属性,或者该服务没有此属性的默认值
      抛出:
      NullPointerException - 如果 categorynull
      IllegalArgumentException - 如果 category 不是实现接口 Attribute Class
    • getSupportedAttributeValues

      Object  getSupportedAttributeValues(Class <? extends Attribute > category, DocFlavor  flavor, AttributeSet  attributes)
      确定客户端在为此打印服务设置作业时可以在给定类别中指定的打印属性值。打印属性值是实现接口 Attribute 的类的实例。

      如果 flavornull 并且 attributesnull 或者是空集,则此方法返回此打印服务支持的所有可能作业的所有打印属性值。如果 flavor 不是 nullattributes 不是空集,则此方法仅返回与给定文档风格和/或属性集兼容的打印属性值。也就是说,null 返回值可能表示指定此属性与指定的 DocFlavor 不兼容。此外,如果 DocFlavor 不是 null,则它必须是此 PrintService 支持的风格,否则将抛出 IllegalArgumentException

      如果 attributes 参数包含类别与 category 参数相同的 Attribute,则服务必须忽略 AttributeSet 中的此属性。

      要在 Doc 上指定的 DocAttribute s 必须包含在此集合中以准确表示上下文。

      该方法返回一个Object,因为不同的打印属性类别以不同的方式表示支持的属性值。 javax.print.attribute.standard 包中每个打印属性的文档描述了每个属性如何指示其支持的值。表示支持的可能方式包括:

      • 返回属性类别的单个实例以指示任何值都是合法的——例如,由值为任意文本字符串的属性使用。 (返回的属性对象的值无关紧要。)
      • 返回属性类别的一个或多个实例的数组,其中包含合法值——例如,由具有枚举值列表的属性使用。数组的类型是由其 getCategory(Class) 返回的指定属性类别类型的数组。
      • 返回一个指示合法值范围的对象(属于除属性类别之外的某个类)——例如,由必须位于特定范围内的整数值属性使用。
      参数:
      category - 打印属性类别进行测试。它必须是实现接口 Attribute Class
      flavor - 假定工作的文档风格,或 null
      attributes - 假定作业的打印属性集(作业级属性和文档级属性),或 null
      返回:
      指示 categorynull 支持值的对象,如果此打印服务不支持在打印请求中的 category 中指定文档级或作业级属性
      抛出:
      NullPointerException - 如果 categorynull
      IllegalArgumentException - 如果 category 不是实现接口 Attribute Class ,或者此服务不支持 DocFlavor
    • isAttributeValueSupported

      boolean isAttributeValueSupported(Attribute  attrval, DocFlavor  flavor, AttributeSet  attributes)
      确定客户端在为此打印服务设置作业时是否可以指定给定的打印属性值。打印属性值是实现接口 Attribute 的类的实例。

      如果 flavornull 并且 attributesnull 或者是一个空集,则此方法会告知此打印服务是否支持给定的打印属性值,以获取文档风格和属性集的某些可能组合。如果 flavor 不是 nullattributes 不是空集,此方法会告知此打印服务是否支持给定的打印属性值与给定的文档风格和/或属性集相结合。

      此外,如果 DocFlavor 不是 null,则它必须是此 PrintService 支持的风格,否则将抛出 IllegalArgumentException

      要在 Doc 上指定的 DocAttribute s 必须包含在此集合中以准确表示上下文。

      这是确定该值是否是 getSupportedAttributeValues(...) 结果的成员的便捷方法。

      参数:
      attrval - 打印属性值进行测试
      flavor - 假定工作的文档风格,或 null
      attributes - 假定作业的打印属性集(作业级属性和文档级属性),或 null
      返回:
      true 如果此打印服务支持将 attrval 指定为打印请求中的文档级或作业级属性,false 如果不支持
      抛出:
      NullPointerException - 如果 attrvalnull
      IllegalArgumentException - 如果这个 PrintService 不支持 flavor
    • getUnsupportedAttributes

      AttributeSet  getUnsupportedAttributes(DocFlavor  flavor, AttributeSet  attributes)
      标识在特定 DocFlavor 上下文中打印请求不支持的属性。此方法对于验证潜在的打印作业和识别不支持的特定属性很有用。仅提供受支持的 DocFlavor 很重要,否则将抛出 IllegalArgumentException。如果此方法的返回值为 null ,则支持所有属性。

      要在 Doc 上指定的 DocAttribute s 必须包含在此集合中以准确表示上下文。

      如果返回值为 non-null ,则此 DocFlavor 不支持返回集中的所有属性。返回的集合不区分不受支持的属性类别和不受支持的属性值。

      然后可以通过从原始属性集中删除所有不受支持的属性来创建受支持的打印请求,DocFlavor 不受支持的情况除外。

      如果任何属性仅因为它们与其他属性冲突而不受支持,则服务将自行决定选择要标识为冲突原因的属性。

      在调用此方法之前,使用 isDocFlavorSupported() 验证是否支持 DocFlavor

      参数:
      flavor - 要测试的文档风格,或 null
      attributes - 假定作业的打印属性集(作业级属性和文档级属性),或 null
      返回:
      null 如果此打印服务支持打印请求规范,否则不支持的属性
      抛出:
      IllegalArgumentException - 如果 flavor 不受此 PrintService 支持
    • getServiceUIFactory

      ServiceUIFactory  getServiceUIFactory()
      返回 UI 组件的工厂,允许用户以各种角色与服务交互。不提供任何 UI 的服务应该返回 null 。确实提供 UI 但希望在不支持 UI 的环境中得到支持的打印服务应确保不初始化工厂,除非应用程序调用此方法来获取工厂。有关详细信息,请参阅 ServiceUIFactory
      返回:
      null 或 UI 组件工厂
    • equals

      boolean equals(Object  obj)
      确定两个服务是否引用相同的基础服务。封装打印服务的对象可能不会表现出引用的相等性,即使它们引用相同的底层服务。

      客户端应调用此方法来确定两个服务是否引用相同的基础服务。

      服务必须实现此方法并仅在被比较的服务对象可由客户端互换使用时才返回 true。如果是这样,服务可以自由地将相同的对象引用返回给底层服务,但客户端不能依赖于引用的相等性。

      重写:
      equals 在类 Object
      参数:
      obj - 要与之比较的参考对象
      返回:
      true 如果此服务与 obj 参数相同,false 否则
      参见:
    • hashCode

      int hashCode()
      此方法应与 equals(Object) 一致地实施。
      重写:
      hashCode 在类 Object
      返回:
      此对象的哈希码
      参见: