進階列印技術

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 屬性來取得可用印表機清單。該屬性是 Vector,而其 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)。

請參閱列印範例:頁面設定和列印選項