模块 java.desktop

类 PrinterJob

java.lang.Object
java.awt.print.PrinterJob

public abstract class PrinterJob extends Object
PrinterJob 类是控制打印的主要类。应用程序调用此类中的方法来设置作业,可选择调用与用户的打印对话框,然后打印作业的页面。
  • 构造方法详细信息

    • PrinterJob

      public PrinterJob()
      应使用静态 getPrinterJob 方法创建 PrinterJob 对象。
  • 方法详情

    • getPrinterJob

      public static PrinterJob  getPrinterJob()
      创建并返回一个最初与默认打印机关联的 PrinterJob。如果系统上没有打印机可用,此方法仍会返回 PrinterJob,但 getPrintService() 将返回 null,并且使用此 PrinterJob 调用 print 可能会产生异常。在创建 PrinterJob 之前需要确定是否有合适的打印机的应用程序应确保从 lookupPrintServices 返回的数组不为空。
      返回:
      一个新的PrinterJob
      抛出:
      SecurityException - 如果安全管理器存在且其 SecurityManager.checkPrintJobAccess() 方法不允许此线程创建打印作业请求
    • lookupPrintServices

      public static PrintService [] lookupPrintServices()
      一种查找 2D 打印服务的便捷方法。从此方法返回的服务可能安装在支持打印服务的 PrinterJob 上。调用此方法等同于调用 PrintServiceLookup.lookupPrintServices() 并指定一个 Pageable DocFlavor。
      返回:
      可能为空的 2D 打印服务数组。
      自从:
      1.4
    • lookupStreamPrintServices

      public static StreamPrintServiceFactory [] lookupStreamPrintServices(String  mimeType)
      一种方便的方法,可以为可以成像 2D 图形的流打印服务定位工厂。示例用法:
      
       FileOutputStream outstream;
       StreamPrintService psPrinter;
       String psMimeType = "application/postscript";
       PrinterJob pj = PrinterJob.getPrinterJob();
      
       StreamPrintServiceFactory[] factories =
         PrinterJob.lookupStreamPrintServices(psMimeType);
       if (factories.length > 0) {
         try {
           outstream = new File("out.ps");
           psPrinter = factories[0].getPrintService(outstream);
           // psPrinter can now be set as the service on a PrinterJob
           pj.setPrintService(psPrinter)
         } catch (Exception e) {
           e.printStackTrace();
         }
       }
        
      从此方法返回的服务可能安装在支持打印服务的 PrinterJob 实例上。调用此方法等同于调用 StreamPrintServiceFactory.lookupStreamPrintServiceFactories() 并指定一个 Pageable DocFlavor。
      参数:
      mimeType - 所需的输出格式,或 null 表示任何格式。
      返回:
      一个可能为空的二维流打印服务工厂数组。
      自从:
      1.4
    • getPrintService

      public PrintService  getPrintService()
      返回此打印机作业的服务(打印机)。不支持打印服务的此类的实现可能返回 null。如果没有可用的打印机,也将返回 null。
      返回:
      此打印机作业的服务。
      自从:
      1.4
      参见:
    • setPrintService

      public void setPrintService(PrintService  service) throws PrinterException
      将此 PrinterJob 与新的 PrintService 相关联。此方法被支持指定打印服务的子类覆盖。如果指定的服务不支持支持 2D 打印所需的 PageablePrintable 接口,则抛出 PrinterException
      参数:
      service - 支持二维打印的打印服务
      抛出:
      PrinterException - 如果指定的服务不支持 2D 打印,或者此 PrinterJob 类不支持设置 2D 打印服务,或者指定的服务不是有效的打印服务。
      自从:
      1.4
      参见:
    • setPrintable

      public abstract void setPrintable(Printable  painter)
      调用 painter 来呈现页面。要由此 PrinterJob 打印的文档中的页面由 Printable 对象 painter 呈现。每个页面的 PageFormat 是默认页面格式。
      参数:
      painter - 呈现文档每一页的 Printable
    • setPrintable

      public abstract void setPrintable(Printable  painter, PageFormat  format)
      调用 painter 以呈现指定 format 中的页面。要由此 PrinterJob 打印的文档中的页面由 Printable 对象 painter 呈现。每页的PageFormatformat
      参数:
      painter - 调用 Printable 以呈现文档的每一页
      format - 要打印的每页的大小和方向
    • setPageable

      public abstract void setPageable(Pageable  document) throws NullPointerException
      查询 document 的页数以及 PageFormatPrintable 查询 Pageable 实例 document 中保存的每个页面。
      参数:
      document - 要打印的页面。它不能是 null
      抛出:
      NullPointerException - 传入的 Pageablenull
      参见:
    • printDialog

      public abstract boolean printDialog() throws HeadlessException
      向用户显示一个对话框,用于更改打印作业的属性。如果选择了本机打印服务,此方法将显示本机对话框,并且用户对打印机的选择将仅限于这些本机打印服务。要为所有服务(包括本机服务)显示跨平台打印对话框,请改用 printDialog(PrintRequestAttributeSet)

      可以使用 PrintService 的 PrinterJob 实现将更新此 PrinterJob 的 PrintService 以反映用户选择的新服务。

      返回:
      true 如果用户没有取消对话; false否则。
      抛出:
      HeadlessException - 如果 GraphicsEnvironment.isHeadless() 返回 true。
      参见:
    • printDialog

      public boolean printDialog(PrintRequestAttributeSet  attributes) throws HeadlessException
      一种方便的方法,它为所有能够使用 Pageable 接口打印 2D 图形的服务显示跨平台打印对话框。最初显示对话框时选择的打印机将反映当前附加到此打印作业的打印服务。如果用户更改打印服务,PrinterJob 将更新以反映这一点,除非用户取消该对话框。除了允许用户选择目标打印机外,用户还可以选择各种打印请求属性的值。

      输入的属性参数将反映应用程序在用户对话框中需要的初始选择。未指定的属性使用服务的默认值显示。返回时它将反映用户的选择。选择可以由实现更新以与当前选择的打印服务的支持值一致。

      当用户滚动到新的打印服务选择时,复制的值将基于先前服务的设置以及任何用户更改。这些值不是基于客户端提供的原始设置。

      除了选定的打印机外,PrinterJob 状态不会更新以反映用户的更改。对于影响打印机作业的选择,必须在对 print(PrintRequestAttributeSet) 方法的调用中指定属性。如果使用 Pageable 接口,打算使用用户选择的媒体的客户端必须创建从用户选择派生的 PageFormat。如果用户取消对话框,属性将不会反映用户所做的任何更改。

      参数:
      attributes - 输入时是应用程序提供的属性,输出时更新内容以反映用户选择。此参数不能为空。
      返回:
      true 如果用户没有取消对话; false否则。
      抛出:
      HeadlessException - 如果 GraphicsEnvironment.isHeadless() 返回 true。
      NullPointerException - 如果 attributes 参数为空。
      自从:
      1.4
      参见:
    • pageDialog

      public abstract PageFormat  pageDialog(PageFormat  page) throws HeadlessException
      显示允许修改 PageFormat 实例的对话框。 page 参数用于初始化页面设置对话框中的控件。如果用户取消对话框,则此方法返回未修改的原始 page 对象。如果用户同意对话框,则此方法返回一个新的 PageFormat 对象,其中包含指示的更改。在任何一种情况下,原始的 page 对象都不会被修改。
      参数:
      page - 默认 PageFormat 呈现给用户进行修改
      返回:
      如果对话框被取消,则为原始 page 对象;一个新的 PageFormat 对象,如果对话框被确认,则包含用户指定的格式。
      抛出:
      HeadlessException - 如果 GraphicsEnvironment.isHeadless() 返回 true。
      自从:
      1.2
      参见:
    • pageDialog

      public PageFormat  pageDialog(PrintRequestAttributeSet  attributes) throws HeadlessException
      一种显示跨平台页面设置对话框的便捷方法。可用的选项将反映当前在此 PrinterJob 上设置的打印服务。

      输入的 attributes 参数将反映客户在用户对话框中所需的初始选择。未指定的属性使用服务的默认值显示。返回时它将反映用户的选择。选择可以由实现更新以与当前选择的打印服务的支持值一致。

      返回值将是与 PrintRequestAttributeSet 中的选择等效的 PageFormat。如果用户取消对话框,属性将不会反映用户所做的任何更改,并且返回值为 null。

      参数:
      attributes - 输入时是应用程序提供的属性,输出时更新内容以反映用户选择。此参数不能为空。
      返回:
      如果用户不取消对话框,则为页面格式; null否则。
      抛出:
      HeadlessException - 如果 GraphicsEnvironment.isHeadless() 返回 true。
      NullPointerException - 如果 attributes 参数为空。
      自从:
      1.4
      参见:
    • defaultPage

      public abstract PageFormat  defaultPage(PageFormat  page)
      克隆 PageFormat 参数并更改克隆以描述默认页面大小和方向。
      参数:
      page - 要克隆和更改的 PageFormat
      返回:
      page 的克隆,更改为描述默认 PageFormat
    • defaultPage

      public PageFormat  defaultPage()
      创建一个新的 PageFormat 实例并将其设置为默认大小和方向。
      返回:
      a PageFormat 设置为默认大小和方向。
    • getPageFormat

      public PageFormat  getPageFormat(PrintRequestAttributeSet  attributes)
      计算 PageFormat,其值与当前 PrintService 支持的值(即 getPrintService() 返回的值)和 attributes 中包含的介质、可打印区域和方向一致。

      调用此方法不会更新作业。它对于具有从 printDialog(PrintRequestAttributeSet attributes) 获得的一组属性并且需要 PageFormat 来打印 Pageable 对象的客户端很有用。

      参数:
      attributes - 一组打印属性,例如通过调用 printDialog 获得。如果 attributes 为 null,则返回默认的 PageFormat。
      返回:
      a PageFormat 其设置符合当前服务的设置和指定的属性。
      自从:
      1.6
    • validatePage

      public abstract PageFormat  validatePage(PageFormat  page)
      返回 page 的克隆,其设置已调整为与此 PrinterJob 的当前打印机兼容。例如,返回的 PageFormat 可以调整其可成像区域以适应当前打印机使用的纸张的物理区域。
      参数:
      page - 克隆的 PageFormat,其设置已更改为与当前打印机兼容
      返回:
      page 克隆而来的 PageFormat,其设置已更改为符合此 PrinterJob
    • print

      public abstract void print() throws PrinterException
      打印一组页面。
      抛出:
      PrinterException - 打印系统中的错误导致作业中止。
      参见:
    • print

      public void print(PrintRequestAttributeSet  attributes) throws PrinterException
      使用属性集中的设置打印一组页面。默认实现忽略属性集。

      请注意,某些属性可以通过等效方法调用直接在 PrinterJob 上设置,(例如)副本:setCopies(int)、作业名称:setJobName(String) 并通过 PageFormat 对象指定介质大小和方向。

      如果在此属性集中指定了受支持的属性值,则它将优先于此 print() 操作的 API 设置。为 PageFormat 指定了以下行为:如果客户端使用 Printable 接口,则检查此方法的 attributes 参数以查找指定媒体(按大小)、方向和可成像区域的属性,这些属性用于构造新的 PageFormat它被传递给 Printable 对象的 print() 方法。请参阅 Printable ,了解 Printable 所需的行为以确保通过 PrinterJob 进行最佳打印。对于 Pageable 接口的客户端,PageFormat 将始终由该接口提供,基于每页。

      这些行为允许应用程序直接将从 printDialog(PrintRequestAttributeSet attributes 返回的用户设置传递给此 print() 方法。

      参数:
      attributes - 作业的一组属性
      抛出:
      PrinterException - 打印系统中的错误导致作业中止。
      自从:
      1.4
      参见:
    • setCopies

      public abstract void setCopies(int copies)
      设置要打印的份数。
      参数:
      copies - 要打印的份数
      参见:
    • getCopies

      public abstract int getCopies()
      获取要打印的份数。
      返回:
      要打印的份数。
      参见:
    • getUserName

      public abstract String  getUserName()
      获取打印用户的名称。
      返回:
      打印用户的名称
      抛出:
      SecurityException - 如果存在安全管理器并且 PropertyPermission - 策略文件中未给出用户名
    • setJobName

      public abstract void setJobName(String  jobName)
      设置要打印的文档的名称。文档名称不能是 null
      参数:
      jobName - 要打印的文档的名称
      参见:
    • getJobName

      public abstract String  getJobName()
      获取要打印的文档的名称。
      返回:
      要打印的文档的名称。
      参见:
    • cancel

      public abstract void cancel()
      取消正在进行的打印作业。如果 print 已被调用但尚未返回,则此方法会发出信号,表示下次应取消该作业。如果没有正在进行的打印作业,则此调用不执行任何操作。
    • isCancelled

      public abstract boolean isCancelled()
      如果打印作业正在进行,但将在下一次机会时取消,则返回 true;否则返回 false
      返回:
      true 如果正在进行的工作将被取消; false否则。