可以同时安装多个实现。所有实现都必须能够将定位的打印机描述为 PrintService 的实例。通常此服务类的实现自动位于 JAR 文件中(请参阅 SPI JAR 文件规范)。这些类必须可以使用默认构造函数实例化。或者,应用程序可以在运行时显式注册实例。
应用程序仅使用此抽象类的静态方法。实例方法由子类中的服务提供者实现,并且当应用程序调用时,此类的静态方法报告所有已安装查找类的结果的统一。
建议 PrintServiceLookup 实施者检查 SecurityManager.checkPrintJobAccess() 以拒绝访问不受信任的代码。遵循此推荐策略意味着不受信任的代码可能无法找到任何打印服务。下载的小程序是不可信代码的最常见示例。
此检查是在每个查找服务的基础上进行的,以允许策略灵活地反映不同查找服务的需求。
如果安装了安全管理器并且其 checkPrintJobAccess() 方法拒绝访问,则由 registerService(PrintService) 注册的服务将不会包含在查找结果中。
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述abstract 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能够打印MultiDocs包含所有指定的文档风格。static final PrintService[]lookupPrintServices(DocFlavor flavor, AttributeSet attributes) 找到能够打印指定DocFlavor的打印服务。static booleanregisterService(PrintService service) 允许应用程序直接注册实现打印服务的类的实例。static boolean允许应用程序显式注册实现查找服务的类。
-
构造方法详细信息
-
PrintServiceLookup
protected PrintServiceLookup()子类调用的构造方法。
-
-
方法详情
-
lookupPrintServices
找到能够打印指定DocFlavor的打印服务。- 参数:
flavor- 要打印的风味。如果是null,则不使用此约束。attributes- 打印服务必须支持的属性。如果null不使用此约束。- 返回:
-
代表支持指定风格属性的打印服务的匹配
PrintService对象数组。如果没有服务匹配,则该数组为零长度。
-
lookupMultiDocPrintServices
public static final MultiDocPrintService [] lookupMultiDocPrintServices(DocFlavor [] flavors, AttributeSet attributes) 定位MultiDoc打印Services能够打印MultiDocs包含所有指定的文档风格。此方法有助于找到可以打印
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) 不直接由应用程序调用。由服务提供者实现,由此类的静态方法使用。
定位
MultiDoc打印服务,可以肯定地确认支持组合属性和DocFlavors指定。- 参数:
flavors- 需要的文件。如果null或为空,它将被忽略。attributes- 需要支持。如果null不使用此约束。- 返回:
-
匹配
PrintServices的数组。如果没有服务匹配,则该数组为零长度。
-
getDefaultPrintService
不直接由应用程序调用。由服务提供者实现,并由打印查找服务调用。- 返回:
-
此查找服务的默认
PrintService。如果没有默认值,则返回null。
-