高级打印技术

Adobe AIR 2 和更高版本

从 Adobe AIR 2 开始,PrintJob 类包含附加属性和方法,并支持三个附加类:PrintUIOptions、PaperSize 和 PrintMethod。这些更改支持附加打印机工作流程,使作者可以更好地控制打印过程。这些更改包括:

  • “页面设置”对话框:可显示标准和自定义“页面设置”对话框。在打印之前,用户可以设置页面范围、页面大小、页面方向和页面缩放。

  • 打印视图:一种查看模式,可准确显示页面大小、页面边距和内容在页面上的位置。

  • 受限打印:作者可以限制打印选项,如可打印页面范围。

  • “品质”选项:作者可调整文档的打印品质并允许用户选择分辨率和颜色选项。

  • 多个打印会话:现在单个 PrintJob 实例可用于多个打印会话。每次显示“页面设置”和“打印”对话框时,应用程序都可提供一致的设置。

打印工作流更改

新建打印工作流程包括下列步骤:

  • new PrintJob():创建 PrintJob 实例(或重用现有的实例)。在启动打印作业之前或在打印期间可以使用许多新的 PrintJob 属性和方法,例如 selectPaperSize()

  • PrintJob.showPageSetupDialog():(可选)在不启动打印作业的情况下显示“页面设置”对话框。

  • PrintJob.start()PrintJob.start2():除了 start() 方法之外,还可以使用 start2() 方法来启动后台打印过程。借助 start2() 方法,您可以选择是否显示“打印”对话框,如果不显示该对话框,是否对其进行自定义。

  • PrintJob.addPage():将内容添加到打印作业。不会更改现有进程。

  • PrintJob.send()PrintJob.terminate():将页面发送到所选的打印机或在不发送的情况下终止打印作业。出现错误时,终止打印作业。如果终止 PrintJob 实例,仍然可以重用它。无论是将打印作业发送到打印机还是终止打印作业,重用 PrintJob 实例时,都会保留当前打印设置。

“页面设置”对话框

showPageSetupDialog() 方法将显示操作系统的“页面设置”对话框,如果当前环境支持此功能。在调用此方法之前,始终先查看 supportsPageSetupDialog 属性。以下是一个简单示例:

import flash.printing.PrintJob; 
     
var myPrintJob:PrintJob = new PrintJob(); 
//check for static property supportsPageSetupDialog of PrintJob class 
if (PrintJob.supportsPageSetupDialog) { 
    myPrintJob.showPageSetupDialog(); 
}

可使用 PrintUIOptions 类属性选择性地调用此方法以控制在“页面设置”对话框中显示哪些选项。可设置最小和最大页码。在以下示例中,限制只打印前三个页面:

import flash.printing.PrintJob; 
     
var myPrintJob:PrintJob = new PrintJob(); 
if (PrintJob.supportsPageSetupDialog) { 
    var uiOpt:PrintUIOptions = new PrintUIOptions(); 
    uiOpt.minPage = 1; 
    uiOpt.maxPage = 3; 
    myPrintJob.showPageSetupDialog(uiOpt); 
}

更改打印设置

在构建 PrintJob 实例之后,可以随时更改其设置。这包括在 addPage() 调用之间以及在发送或终止打印作业之后更改设置。一些设置(例如 printer 属性)应用于整个打印作业而不是单个页面。这些设置必须在调用 start()start2() 之前设置。

通过调用 selectPaperSize() 方法,可以设置“页面设置”对话框和“打印”对话框中的默认页面大小。也可以在打印作业期间调用该方法以设置一系列页面的页面大小。使用在 PaperSize 类中定义的常量调用它,如在以下示例中,选择了 10 号信封尺寸:

import flash.printing.PrintJob; 
import flash.printing.PaperSize; 
     
var myPrintJob:PrintJob = new PrintJob(); 
myPrintJob.selectPaperSize(PaperSize.ENV_10);

使用 printer 属性获取或设置当前打印作业的打印机名称。默认情况下,设置为默认打印机的名称。如果打印机不可用或系统不支持打印,则 printer 属性为 null。要更改打印机,首先使用 printers 属性获取可用打印机列表。该属性是其 String 元素为可用打印机名称的矢量。将 printer 属性设置为这些 String 值之一以使该打印机成为活动打印机。活动打印作业的 printer 属性无法更改。在成功调用 start()start2() 之后以及在发送或终止作业之前,任何对此属性的更改尝试都将失败。在以下示例中,对此属性进行了设置:

import flash.printing.PrintJob; 
     
var myPrintJob:PrintJob = new PrintJob(); 
myPrintJob.printer = "HP_LaserJet_1"; 
myPrintJob.start();

copies 属性获取在操作系统的“打印”对话框中设置的打印份数值。firstPagelastPage 属性获取页面范围。orientation 属性获取纸张方向设置。可以对这些属性进行设置以覆盖“打印”对话框中的值。在以下示例中,设置了这些属性:

import flash.printing.PrintJob; 
import flash.printing.PrintJobOrientation; 
     
var myPrintJob:PrintJob = new PrintJob(); 
myPrintJob.copies = 3; 
myPrintJob.firstPage = 1; 
myPrintJob.lastPage = 3; 
myPrintJob.orientation = PrintJobOrientation.LANDSCAPE;

通过下列与 PrintJob 关联的只读设置,可以了解有关当前打印机设置的有用信息:

  • paperArea:打印机媒体的矩形范围(以点为单位)。

  • printableArea:可打印区域的矩形范围(以点为单位)。

  • maxPixelsPerInch:当前打印机的物理分辨率(以每英寸像素为单位)。

  • isColor:当前打印机能否打印颜色(如果可以,则返回 true)。

请参阅打印示例:页面设置和打印选项