可以同时安装多个实现。所有实现都必须能够将找到的打印机描述为PrintService
的实例。通常,此服务类的实现会自动在JAR文件中定位(请参阅SPI JAR文件规范)。这些类必须可以使用默认构造函数实例化。或者应用程序可以在运行时显式注册实例。
应用程序仅使用此抽象类的静态方法。实例方法由子类中的服务提供者实现,并在应用程序调用时由此类的静态方法报告所有已安装查找类的结果的统一。
建议PrintServiceLookup
实现者检查SecurityManager.checkPrintJobAccess()
以拒绝对不受信任的代码的访问。遵循此建议策略意味着不受信任的代码可能无法定位任何打印服务。下载的小程序是不受信任代码的最常见示例。
此检查是基于每个查找服务的基础进行的,以允许灵活地调整策略以反映不同查找服务的需求。
通过registerService(PrintService)
注册的服务,如果安装了安全管理器并且其checkPrintJobAccess()
方法拒绝访问,则不会包含在查找结果中。
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract PrintService
应用程序不直接调用。abstract MultiDocPrintService[]
getMultiDocPrintServices
(DocFlavor[] flavors, AttributeSet attributes) 应用程序不直接调用。abstract PrintService[]
应用程序不直接调用。abstract PrintService[]
getPrintServices
(DocFlavor flavor, AttributeSet attributes) 定位可以肯定支持指定属性和DocFlavors
组合的服务。static final PrintService
定位此环境的默认打印服务。static final MultiDocPrintService[]
lookupMultiDocPrintServices
(DocFlavor[] flavors, AttributeSet attributes) 定位能够打印包含所有指定文档格式的MultiDoc
打印Services
。static final PrintService[]
lookupPrintServices
(DocFlavor flavor, AttributeSet attributes) 定位可以打印指定DocFlavor
的打印服务。static boolean
registerService
(PrintService service) 允许应用程序直接注册实现打印服务的类的实例。static boolean
允许应用程序显式注册实现查找服务的类。
-
Constructor Details
-
PrintServiceLookup
protected PrintServiceLookup()子类调用的构造函数。
-
-
Method Details
-
lookupPrintServices
定位可以打印指定DocFlavor
的打印服务。- 参数:
-
flavor
- 要打印的格式。如果为null
,则不使用此约束。 -
attributes
- 打印服务必须支持的属性。如果为null
,则不使用此约束。 - 返回:
-
匹配的
PrintService
对象数组,表示支持指定格式属性的打印服务。如果没有匹配的服务,则数组长度为零。
-
lookupMultiDocPrintServices
public static final MultiDocPrintService[] lookupMultiDocPrintServices(DocFlavor[] flavors, AttributeSet attributes) 定位可以打印包含所有指定文档格式的MultiDoc
的打印Services
。此方法有助于定位可以打印
MultiDoc
的服务,其中元素可能是不同的格式。应用程序可以通过依次对每个DocFlavor
进行多次查找并整理结果来执行此操作,但查找服务可能能够更有效地执行此操作。- 参数:
-
flavors
- 要打印的格式。如果为null
或空,则不使用此约束。否则,仅返回可以打印所有指定文档格式的多文档打印服务。 -
attributes
- 打印服务必须支持的属性。如果为null
,则不使用此约束。 - 返回:
-
匹配的
MultiDocPrintService
对象数组。如果没有匹配的服务,则数组长度为零。
-
lookupDefaultPrintService
定位此环境的默认打印服务。可能返回null
。如果多个查找服务各自指定一个默认服务,则所选服务的定义不是精确定义的,但通常返回的是平台本地服务,而不是已安装的服务。如果没有明确定义的平台本地默认打印服务,则默认服务是以实现相关方式定位的第一个服务。这可能包括利用作为Java或本机平台的一部分可用的任何首选项API。此算法可能会被用户设置属性
javax.print.defaultPrinter
覆盖。指定的服务必须被发现为有效且当前可用才能作为默认返回。- 返回:
-
默认的
PrintService
-
registerServiceProvider
允许应用程序显式注册实现查找服务的类。注册不会跨VM调用持久化。如果应用程序需要提供一个不属于安装的新服务,则此方法很有用。如果查找服务已经注册,或者无法注册,则该方法返回false
。- 参数:
-
sp
- 查找服务的实现 - 返回:
-
如果新的查找服务是新注册的,则返回
true
;否则返回false
-
registerService
允许应用程序直接注册实现打印服务的类的实例。此服务的查找操作将由PrintServiceLookup
类使用服务报告的属性值和类执行。这可能不如针对该服务调整的查找服务高效。因此,建议注册PrintServiceLookup
实例。如果此服务以前未注册并且现在成功注册,则该方法返回true
。不应使用StreamPrintService
实例调用此方法。它们将始终无法注册,并且该方法将返回false
。- 参数:
-
service
- 打印服务的实现 - 返回:
-
如果服务是新注册的,则返回
true
;否则返回false
-
getPrintServices
定位可以肯定支持指定属性和DocFlavors
组合的服务。此方法不会被应用程序直接调用。由服务提供者实现,由此类的静态方法使用。
结果应与获取所有
PrintServices
并分别查询每个服务对其对指定属性和格式的支持相同,但是通过利用查找服务对打印服务的能力,该过程可能更有效。- 参数:
-
flavor
- 所需文档的格式。如果为null
,则忽略。 -
attributes
- 必须支持的属性。如果为null
,则不使用此约束。 - 返回:
-
匹配的
PrintServices
数组。如果没有匹配的服务,则数组长度为零。
-
getPrintServices
应用程序不直接调用。由服务提供者实现,由此类的静态方法使用。- 返回:
-
所有已知的
PrintServices
数组。如果没有找到,则数组长度为零。
-
getMultiDocPrintServices
public abstract MultiDocPrintService[] getMultiDocPrintServices(DocFlavor[] flavors, AttributeSet attributes) 应用程序不直接调用。由服务提供者实现,由此类的静态方法使用。
定位可以肯定支持指定属性和
DocFlavors
组合的MultiDoc
打印服务。- 参数:
-
flavors
- 所需文档的格式。如果为null
或空,则忽略。 -
attributes
- 必须支持的属性。如果为null
,则不使用此约束。 - 返回:
-
匹配的
PrintServices
数组。如果没有匹配的服务,则数组长度为零。
-
getDefaultPrintService
应用程序不直接调用。由服务提供者实现,并由打印查找服务调用。- 返回:
-
此查找服务的默认
PrintService
。如果没有默认值,则返回null
。
-