模块 java.desktop

类 PrintServiceLookup

java.lang.Object
javax.print.PrintServiceLookup

public abstract class PrintServiceLookup extends Object
此类的实现为特定类型的打印服务(通常相当于打印机)提供查找服务。

可以同时安装多个实现。所有实现都必须能够将定位的打印机描述为 PrintService 的实例。通常此服务类的实现自动位于 JAR 文件中(请参阅 SPI JAR 文件规范)。这些类必须可以使用默认构造函数实例化。或者,应用程序可以在运行时显式注册实例。

应用程序仅使用此抽象类的静态方法。实例方法由子类中的服务提供者实现,并且当应用程序调用时,此类的静态方法报告所有已安装查找类的结果的统一。

建议 PrintServiceLookup 实施者检查 SecurityManager.checkPrintJobAccess() 以拒绝访问不受信任的代码。遵循此推荐策略意味着不受信任的代码可能无法找到任何打印服务。下载的小程序是不可信代码的最常见示例。

此检查是在每个查找服务的基础上进行的,以允许策略灵活地反映不同查找服务的需求。

如果安装了安全管理器并且其 checkPrintJobAccess() 方法拒绝访问,则由 registerService(PrintService) 注册的服务将不会包含在查找结果中。

  • 构造方法详细信息

    • PrintServiceLookup

      protected PrintServiceLookup()
      子类调用的构造方法。
  • 方法详情

    • lookupPrintServices

      public static final PrintService [] lookupPrintServices(DocFlavor  flavor, AttributeSet  attributes)
      找到能够打印指定 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

      public static final PrintService  lookupDefaultPrintService()
      找到此环境的默认打印服务。这可能会返回 null 。如果多个查找服务各自指定一个默认值,则所选服务未精确定义,但通常返回平台本机服务而不是已安装的服务作为默认值。如果没有明确可识别的平台原生默认打印服务,则默认首先以依赖于实现的方式定位。

      这可能包括使用作为 Java 或本机平台的一部分可用的任何首选项 API。该算法可能会被用户设置属性 javax.print.defaultPrinter 覆盖。必须发现指定的服务是有效的并且当前可用才能作为默认值返回。

      返回:
      默认PrintService
    • registerServiceProvider

      public static boolean registerServiceProvider(PrintServiceLookup  sp)
      允许应用程序显式注册实现查找服务的类。注册不会跨 VM 调用持续存在。如果应用程序需要使不属于安装的新服务可用,这将很有用。如果查找服务已经注册或无法注册,则该方法返回 false
      参数:
      sp - 查找服务的实现
      返回:
      true如果新的查找服务是新注册的; false否则
    • registerService

      public static boolean registerService(PrintService  service)
      允许应用程序直接注册实现打印服务的类的实例。该服务的查找操作将由 PrintServiceLookup 类使用该服务报告的属性值和类来执行。这可能比为该服务调整的查找服务效率低。因此建议注册一个 PrintServiceLookup 实例。如果此服务以前未注册并且现在已成功注册,则该方法返回 true。不应使用 StreamPrintService 个实例调用此方法。他们将始终无法注册并且该方法将返回 false
      参数:
      service - 打印服务的实现
      返回:
      true 如果服务是新注册的; false否则
    • getPrintServices

      public abstract PrintService [] getPrintServices(DocFlavor  flavor, AttributeSet  attributes)
      定位可以肯定确认支持属性和DocFlavors指定组合的服务。应用程序不直接调用此方法。

      由服务提供者实现,由此类的静态方法使用。

      结果应该与获取所有 PrintServices 并单独查询每个对象对指定属性和风格的支持相同,但通过利用打印服务的查找服务功能,该过程可以更高效。

      参数:
      flavor - 所需文件。如果是 null 则被忽略。
      attributes - 需要支持。如果null不使用此约束。
      返回:
      匹配 PrintServices 的数组。如果没有服务匹配,则该数组为零长度。
    • getPrintServices

      public abstract PrintService [] getPrintServices()
      不直接由应用程序调用。由服务提供者实现,由此类的静态方法使用。
      返回:
      此查找服务类已知的所有 PrintServices 数组。如果未找到,则该数组为零长度。
    • getMultiDocPrintServices

      public abstract MultiDocPrintService [] getMultiDocPrintServices(DocFlavor [] flavors, AttributeSet  attributes)
      不直接由应用程序调用。

      由服务提供者实现,由此类的静态方法使用。

      定位MultiDoc打印服务,可以肯定地确认支持组合属性和DocFlavors指定。

      参数:
      flavors - 需要的文件。如果 null 或为空,它将被忽略。
      attributes - 需要支持。如果null不使用此约束。
      返回:
      匹配 PrintServices 的数组。如果没有服务匹配,则该数组为零长度。
    • getDefaultPrintService

      public abstract PrintService  getDefaultPrintService()
      不直接由应用程序调用。由服务提供者实现,并由打印查找服务调用。
      返回:
      此查找服务的默认 PrintService。如果没有默认值,则返回 null