Module java.desktop
Package javax.print

Interface 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) {
        }
   }
   
  • Method Details

    • 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()方法时此打印服务的属性集的“快照”:也就是说,如果此打印服务的属性集内容在将来发生更改,返回的属性集的内容将不会更新。要检测属性值的更改,再次调用getAttributes()并将新的属性集与先前的属性集进行比较;或者,注册一个打印服务事件的监听器。
      返回:
      此打印服务的属性集的不可修改快照。可能为空,但不是null
    • getAttribute

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

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

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

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

      boolean isDocFlavorSupported(DocFlavor flavor)
      确定此打印服务是否支持特定的DocFlavor。这是一个便利方法,用于确定DocFlavor是否将成为getSupportedDocFlavors()结果的成员。

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

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

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

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

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

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

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

      这是一个便利方法,用于确定该类别是否将成为getSupportedAttributeCategories()结果的成员。

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

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

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

      并非所有属性都有默认值。例如,服务不会为 RequestingUser 提供默认值,即对于受支持的类别,返回 null 表示该类别没有服务默认值。使用 isAttributeCategorySupported(Class) 方法来区分这些情况。

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

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

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

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

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

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

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

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

      如果 flavornull,并且 attributesnull 或为空集,则此方法告知此打印服务是否支持给定的打印属性值,适用于某些可能的文档格式和属性集的组合。如果 flavor 不为 null,或者 attributes 不为空集,则此方法告知此打印服务是否支持与给定文档格式和/或属性集结合使用的给定打印属性值。

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

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

      这是一个便利方法,用于确定该值是否是 getSupportedAttributeValues(...) 结果的成员。

      参数:
      attrval - 要测试的打印属性值
      flavor - 用于假定作业的文档格式,或 null
      attributes - 用于假定作业的打印属性集(作业级属性和文档级属性),或 null
      返回:
      如果此打印服务支持在打印请求中指定 attrval 作为文档级或作业级属性,则返回 true;如果不支持,则返回 false
      抛出:
      NullPointerException - 如果 attrvalnull
      IllegalArgumentException - 如果文档格式不受此 PrintService 支持
    • getUnsupportedAttributes

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

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

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

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

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

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

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

      ServiceUIFactory getServiceUIFactory()
      返回一个工厂,用于创建允许用户以各种角色与服务进行交互的UI组件。不提供任何UI的服务应返回null。提供UI但希望在没有UI支持的环境中得到支持的打印服务应确保工厂在应用程序调用此方法以获取工厂之前不被初始化。有关更多信息,请参阅ServiceUIFactory
      返回:
      null或UI组件的工厂
    • equals

      boolean equals(Object obj)
      确定两个服务是否指向相同的基础服务。封装打印服务的对象可能不具有引用相等性,即使它们指向相同的基础服务。

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

      服务必须实现此方法,并仅在服务对象可以被客户端互换使用时返回true。服务可以向基础服务返回相同的对象引用,但客户端不应依赖引用相等性。

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

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