模块  java.desktop
软件包  javax.print

Interface PrintService

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

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

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

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

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

        结果
        支持的doc flavor的数组,至少应该有一个元素
      • isDocFlavorSupported

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

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

        参数
        flavor - 要查询支持的 DocFlavor
        结果
        true如果此打印服务支持指定的DocFlavor ; 否则为false
        异常
        NullPointerException - 如果 flavornull
      • getSupportedAttributeCategories

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

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

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

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

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

        这是一种方便的方法,用于确定该类别是否为getSupportedAttributeCategories()结果的getSupportedAttributeCategories()

        参数
        category - 要测试的打印属性类别。 它必须是 ,它实现了接口Attribute
        结果
        true如果此打印服务支持在打印请求中category中的doc级别或作业级别属性; false如果没有
        异常
        NullPointerException - 如果 categorynull
        IllegalArgumentException -如果category不是实现了接口Attribute
      • getDefaultAttributeValue

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

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

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

        参数
        category - 为其请求默认属性值的打印属性类别。 它必须是 ,它实现了接口Attribute
        结果
        默认属性值 category ,或 null如果打印服务不支持指定的doc级或作业级属性 category在打印请求,或者服务没有此属性的默认值
        异常
        NullPointerException - 如果 categorynull
        IllegalArgumentException -如果category不是实现了接口Attribute
      • getSupportedAttributeValues

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

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

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

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

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

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

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

        如果flavornull并且attributesnull或者是空集,则此方法会告知此打印服务是否支持给定的打印属性值以获取doc flavor和属性集的某种可能组合。 如果flavor不是nullattributes不是空集,则此方法将告知此打印服务是否支持给定的打印属性值以及给定的doc flavor和/或属性集。

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

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

        这是一种方便的方法,用于确定该值是否为getSupportedAttributeValues(...)结果的getSupportedAttributeValues(...)

        参数
        attrval - 要测试的打印属性值
        flavor - 所谓职业的doc风格,或 null
        attributes - 假定作业的打印属性集(作业级属性和文档级属性)或 null
        结果
        true如果打印服务支持指定 attrval作为打印请求doc级或作业级属性, false ,如果它不
        异常
        NullPointerException - 如果 attrvalnull
        IllegalArgumentException - 如果此 PrintService不支持 PrintService
      • getUnsupportedAttributes

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

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

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

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

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

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

        参数
        flavor - 要测试的doc 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
        另请参见:
        Object.hashCode()HashMap