Module  java.desktop
软件包  javax.print

Interface PrintService

  • All Known Subinterfaces:
    MultiDocPrintService
    所有已知实现类:
    StreamPrintService


    public interface PrintService
    Interface PrintService是DocPrintJob的工厂。 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对象
      • getAttributes

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

        <T extends PrintServiceAttribute> T getAttribute​(Class<T> category)
        获取单个指定服务属性的值。 这对于仅需要一个属性的值并且希望最小化开销的客户端可能是有用的。
        参数类型
        T - 指定的服务属性的类型
        参数
        category - 此服务支持的PrintServiceAttribute的类别可能不为空。
        结果
        支持的属性的值,如果该服务不支持该属性,则为null。
        异常
        NullPointerException - 如果类别为空。
        IllegalArgumentException - (未经检查的异常)如果category不是Class实现了接口PrintServiceAttribute
      • getSupportedDocFlavors

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

        请注意,与所有属性相结合可能不支持某些doc风格。 使用getUnsupportedAttributes(..)验证特定组合。

        结果
        支持的doc风格的数组应至少有一个元素。
      • isDocFlavorSupported

        boolean isDocFlavorSupported​(DocFlavor flavor)
        确定此打印服务是否支持特定的DocFlavor 这是一个方便的方法,以确定DocFlavor是否将是DocFlavor的结果的getSupportedDocFlavors()

        请注意,与所有属性相结合可能不支持某些doc风格。 使用getUnsupportedAttributes(..)来验证特定组合。

        参数
        flavor - DocFlavor查询支持。
        结果
        true如果此打印服务支持指定的DocFlavor ; 否则为false
        异常
        NullPointerException - (未经检查的异常)如果 flavor为空,则抛出。
      • getSupportedAttributeCategories

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

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

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

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

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

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

        参数
        category - 打印属性类别进行测试。 它必须是一个Class实现接口Attribute
        结果
        true如果此打印服务支持在打印请求中category中的文档级别或作业级别属性; false如果没有。
        异常
        NullPointerException - (未选中的异常)如果 category为空,则抛出。
        IllegalArgumentException - (未选中的异常)抛出category不是Class实现接口Attribute
      • getDefaultAttributeValue

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

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

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

        参数
        category - 要求其默认属性值的打印属性类别。 它必须是一个Class实现接口Attribute
        结果
        category默认属性值,如果此打印服务不支持在打印请求中 category中的文档级别或作业级别属性,或者该服务没有此属性的默认值, category
        异常
        NullPointerException - (未经检查的异常)如果 category为空,则抛出。
        IllegalArgumentException - (未经检查的异常)如果摔出category不是Class实现了接口Attribute
      • getSupportedAttributeValues

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

        如果flavor为空,并且attributes为空,或为空集,则此方法将返回此Print Service支持的所有打印属性值。 如果flavor不为空,或者attributes不是空集,则此方法仅返回与给定doc风格和/或属性集合兼容的打印属性值。 也就是说,null返回值可能表示指定此属性与指定的DocFlavor不兼容。 另外如果DocFlavor不为空,它必须是此PrintService支持的风格,否则将抛出IllegalArgumentException异常。

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

        DocAttribute S的是将要在指定Doc必须包含在该组以准确地表示上下文。

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

        • 返回属性类别的单个实例,以指示任何值是合法的 - 例如,使用值为任意文本字符串的属性。 (返回的属性对象的值是不相关的。)
        • 返回属性类别的一个或多个实例的数组,其中包含合法值,例如使用具有枚举值列表的属性。 数组的类型是由其getCategory(Class)返回的指定属性类别类型的数组。
        • 返回一个单独的对象(属性类别以外的某个类),该对象指示合法值的边界,例如使用必须位于一定范围内的整数值属性。
        参数
        category - 打印属性类别进行测试。 它必须是一个Class实现接口Attribute
        flavor - 用于假定作业的Doc flavor,或null。
        attributes - 假定作业(作业级别属性和文档级别属性)的打印属性集,或空值。
        结果
        指示 category支持值的 category ,如果此打印服务不支持在打印请求中 category中的文档级别或作业级属性, category
        异常
        NullPointerException - (未选中的异常)抛出,如果 category为空。
        IllegalArgumentException - (未检查异常)抛出category不是Class实现接口Attribute ,或DocFlavor不支持此服务。
      • isAttributeValueSupported

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

        如果flavor为null并且attributes为空或是空集合,则此方法将告知此打印服务是否支持给定的打印属性值,以获取一些可能的doc风格和一组属性的组合。 如果flavor不为空,或者attributes不是空集,则此方法将告知本Print Service是否支持给定的打印属性值以及给定的doc风格和/或一组属性。

        另外如果DocFlavor不为空,它必须是此PrintService支持的风格,否则将抛出IllegalArgumentException异常。

        DocAttribute S的是将要在指定Doc必须包含在该组以准确地表示上下文。

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

        参数
        attrval - 打印要测试的属性值。
        flavor - 用于假定作业的Doc flavor,或null。
        attributes - 假定作业(作业级属性和文档级别属性)的打印属性集,或空值。
        结果
        如果此打印服务支持将 attrval指定为打印请求中的文档级别或作业级别属性, attrval True,否则为false。
        异常
        NullPointerException - (未选中的异常),如果 attrval为空。
        IllegalArgumentException - 如果此PrintService不支持flavor。
      • getUnsupportedAttributes

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

        DocAttribute S的是将要在指定Doc必须包含在该组以准确地表示上下文。

        如果返回值不为空,返回的集合中的所有属性将不受此DocFlavor的支持。 返回的集合不区分不受支持的属性值的属性类别。

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

        如果任何属性不受支持,只因为它们与其他属性冲突,那么服务才可以选择要识别为冲突原因的属性。

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

        参数
        flavor - 要测试的Doc flavor,或者null
        attributes - 假定作业(作业级别属性和文档级别属性)的打印属性集,或空值。
        结果
        如果此打印服务支持打印请求规范,则为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。
        另请参见:
        Object.hashCode()HashMap