| 套件 | flash.printing | 
| 類別 | public class PrintJob | 
| 繼承 | PrintJob    EventDispatcher   Object | 
| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 1.0, Flash Player 9 | 
行動裝置瀏覽器支援:行動裝置瀏覽器不支援此類別。
AIR 描述檔支援:所有桌上型電腦作業系統都支援此項功能,但行動裝置或 AIR for TV 裝置不支援。您可以使用 PrintJob.isSupported 屬性測試執行階段的支援狀況。如需有關跨多個描述檔之 API 支援的詳細資訊,請參閱 AIR 描述檔支援。
請使用 PrintJob() 建構函式建立列印工作。
此外,藉由 PrintJob 類別的屬性,您的文件能夠讀取使用者的印表機設定,如頁高、頁寬和影像旋轉,並可設定文件,使其能夠以動態方式將 Flash 內容格式化,以符合印表機的設定。
                  注意: ActionScript 3.0 沒有將 PrintJob 物件限制在單一影格 (如先前版本的 ActionScript 作法)。 不過,由於作業系統會在使用者按一下「列印」對話方塊中的「確定」按鈕之後,對使用者顯示列印狀態資訊,所以您應該儘快呼叫 PrintJob.addPage() 與 PrintJob.send(),以便將頁面傳送到多功緩衝處理區域。 延遲抵達含有 PrintJob.send() 呼叫的影格,也會延遲列印程序。
此外,還會將 15 秒鐘的程式碼逾時限制套用至下列間隔:
- 
                     
PrintJob.start()和第一個PrintJob.addPage() - 
                     
PrintJob.addPage()和下一個PrintJob.addPage() - 最後一個 
PrintJob.addPage()和PrintJob.send() 
如果以上任何這些間隔超過 15 秒鐘,下一次針對 PrintJob 實體之 PrintJob.start() 的呼叫便會傳回 false,而且 PrintJob 實體的下一個 PrintJob.addPage() 會使 Flash Player 或 Adobe AIR 擲出執行階段例外。
| 屬性 | 定義自 | ||
|---|---|---|---|
|     active : Boolean [靜態] [唯讀] 
     指出列印工作目前是否正在作用中。  | PrintJob | ||
![]()  | constructor : Object 
	 類別物件的參照或是特定物件實體的建構函數。  | Object | |
|     copies : int 
     對於後續新增至列印工作中的所有頁面,列印系統要列印的份數。  | PrintJob | ||
|     firstPage : int [唯讀] 
     使用者在作業系統的「列印」對話方塊中,輸入範圍的第一頁頁碼。  | PrintJob | ||
|     isColor : Boolean [唯讀] 
     指出目前列印設定所選取的印表機,使用彩色 (true) 或灰階 (false) 列印。  | PrintJob | ||
| isSupported : Boolean [靜態] [唯讀] 
    指出目前的平台支援 (true) 或不支援 (false) PrintJob 類別。  | PrintJob | ||
|     jobName : String 
     列印工作的名稱或標題。  | PrintJob | ||
|     lastPage : int [唯讀] 
     使用者在作業系統的「列印」對話方塊中,輸入範圍的最後一頁頁碼。  | PrintJob | ||
|     maxPixelsPerInch : Number [唯讀] 
     所選印表機的實體解析度,以每英吋像素為單位。  | PrintJob | ||
| orientation : String 
    要列印的影像方向。  | PrintJob | ||
| pageHeight : int [唯讀] 
     頁面實際可列印區域中可以置中的最大區域高度,以點為單位。  | PrintJob | ||
| pageWidth : int [唯讀] 
     頁面實際可列印區域中可以置中的最大區域寬度,以點為單位。  | PrintJob | ||
|     paperArea : Rectangle [唯讀] 
     印表機媒體的邊界,以點數為單位。  | PrintJob | ||
| paperHeight : int [唯讀] 
    整體紙張高度,以點為單位。  | PrintJob | ||
| paperWidth : int [唯讀] 
    整體紙張寬度,以點為單位。  | PrintJob | ||
|     printableArea : Rectangle [唯讀] 
     印表機媒體可列印區域的邊界,以點數為單位。  | PrintJob | ||
|     printer : String 
     取得或設定要用於目前列印工作的印表機。  | PrintJob | ||
|     printers : Vector.<String> [靜態] [唯讀] 
     以 String 名稱值提供可用印表機的清單。  | PrintJob | ||
|     supportsPageSetupDialog : Boolean [靜態] [唯讀] 
     指出 Flash 執行階段環境是否支援個別的「頁面設定」對話方塊。  | PrintJob | ||
| 方法 | 定義自 | ||
|---|---|---|---|
PrintJob() 
 建立一個 PrintJob 物件,可讓您用來列印一頁或多頁。  | PrintJob | ||
![]()  | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void 
	會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。  | EventDispatcher | |
addPage(sprite:Sprite, printArea:Rectangle = null, options:PrintJobOptions = null, frameNum:int = 0):void 
     會將指定的 Sprite 物件當作單一頁面,傳送至列印多工緩衝處理區域。  | PrintJob | ||
![]()  | 
	會將事件傳送到事件流程。  | EventDispatcher | |
![]()  | 
	會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。  | EventDispatcher | |
![]()  | 
	 指出物件是否有已定義的指定屬性。  | Object | |
![]()  | 
	 指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。  | Object | |
![]()  | 
	 指出指定的屬性是否存在,以及是否可列舉。  | Object | |
![]()  | 
	會從 EventDispatcher 物件移除偵聽程式。  | EventDispatcher | |
     設定紙張大小。  | PrintJob | ||
      在成功呼叫 start() 或 start2() 及 addPage() 方法後,傳送多工緩衝處理頁面到印表機。  | PrintJob | ||
![]()  | 
     為迴圈作業設定動態屬性的可用性。  | Object | |
     如果目前的環境可支援,顯示作業系統的「頁面設定」對話方塊。  | PrintJob | ||
     顯示作業系統的「列印」對話方塊,並開始進行多工緩衝處理。  | PrintJob | ||
     或者,會顯示作業系統的「列印」對話方塊、開始進行多工緩衝處理,並可能修改 PrintJob 唯讀屬性值。  | PrintJob | ||
     通知印列工作應該終止不應傳送。  | PrintJob | ||
![]()  | 
	 傳回代表此物件的字串,根據地區特定慣例進行格式化。  | Object | |
![]()  | 
	 會傳回指定之物件的字串形式。  | Object | |
![]()  | 
	 會傳回指定之物件的基本值。  | Object | |
![]()  | 
	檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。  | EventDispatcher | |
    active | 屬性 | 
active:Boolean  [唯讀] | 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 2 | 
     指出列印工作目前是否正在作用中。在下列兩種情況下,列印工作為作用中 (屬性值為 true):
	 
     
- 正顯示「頁面設定」或「列印」對話方塊。
 - 已經呼叫 
start()或start2()方法,並得到true傳回值,且並未呼叫send()或terminate()方法。 
如果這個屬性為 true,且呼叫 showPageSetupDialog()、start() 或 start2() 方法,執行階段會擲出例外。
實作
    public static function get active():Boolean相關 API 元素
    copies | 屬性 | 
    firstPage | 屬性 | 
    isColor | 屬性 | 
isSupported | 屬性 | 
    jobName | 屬性 | 
jobName:String| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 2 | 
列印工作的名稱或標題。作業系統通常使用工作名稱做為列印佇列中的工作標題,或做為列印到檔案的工作預設名稱。
如果您尚未呼叫 start() 或 start2(),且您尚未設定屬性值,這個屬性值為 null。
對於您在 PrintJob 實體執行的每個列印工作,在呼叫 start() 或 start2() 方法之前,先設定這個屬性。
 預設值為 null。
實作
    public function get jobName():String    public function set jobName(value:String):void擲回值
IllegalOperationError  — 當 active 屬性為 true,而程式碼嘗試設定屬性時。
     
      | 
    lastPage | 屬性 | 
    maxPixelsPerInch | 屬性 | 
orientation | 屬性 | 
orientation:String| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | Flash Player 9 - read only, AIR 1.0 - read only, AIR 2 - read-write | 
要列印的影像方向。 可接受的值定義為 PrintJobOrientation 類別的常數。
注意:在 AIR 2 或更新版本,先設定這個屬性,再啟動列印工作,可在「頁面設定」及「列印」對話方塊中設定預設紙張方向。在列印工作過程中設定屬性 (在 呼叫 start() 或 start2() 之後,可在工作內之設定頁面範圍的紙張方向。
實作
    public function get orientation():String    public function set orientation(value:String):void相關 API 元素
pageHeight | 屬性 | 
pageWidth | 屬性 | 
    paperArea | 屬性 | 
paperHeight | 屬性 | 
paperWidth | 屬性 | 
    printableArea | 屬性 | 
    printer | 屬性 | 
printer:String| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 2 | 
     取得或設定要用於目前列印工作的印表機。傳遞至 setter 及由 getter 傳回的字串,應該和在 Array 中由 printers() 方法傳回的其中一個字串相符。若要指出應使用預設印表機,請將值設定為 null。在不能判斷預設印表機的作業系統上,這個屬性值為 null。
	 
	 
     import flash.printing.PrintJob;
     
     var myPrintJob:PrintJob = new PrintJob();
     myPrintJob.printer = "HP_LaserJet_1";
     myPrintJob.start();
     設定這個屬性的值,會立刻嘗試選取印表機。如果印表機選取失敗,這個屬性值會重設為之前的值。在嘗試設定印表機值後讀取該值,可以判定印表機值是否設定成功,並確認它符合設定的值。
作用中列印工作的 printer 屬性無法變更。請在呼叫 start() 或 start2() 方法成功之後,及呼叫 send() 或 terminate() 失敗之前變更它。
實作
    public function get printer():String    public function set printer(value:String):void    printers | 屬性 | 
    supportsPageSetupDialog | 屬性 | 
PrintJob | () | 建構函式 | 
public function PrintJob()| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 1.0, Flash Player 9 | 
 建立一個 PrintJob 物件,可讓您用來列印一頁或多頁。 建立 PrintJob 物件之後,您需要依照下列序列使用 PrintJob.start()、PrintJob.addPage() 及 PrintJob.send() 方法,將列印工作傳送至印表機。
 
 
例如,您可以用下列程式碼中顯示的自訂參數,取代 myPrintJob.addPage() 方法呼叫的 [params] 預留位置文字:
 // create PrintJob object
 var myPrintJob:PrintJob = new PrintJob();
  
 // display Print dialog box, but only initiate the print job
 // if start returns successfully.
 if (myPrintJob.start()) {
  
    // add specified page to print job
    // repeat once for each page to be printed
    try {
      myPrintJob.addPage([params]);
    }
    catch(e:Error) {
      // handle error 
    }
    try {
      myPrintJob.addPage([params]);
    }
    catch(e:Error) {
      // handle error 
    }
 
    // send pages from the spooler to the printer, but only if one or more
    // calls to addPage() was successful. You should always check for successful 
    // calls to start() and addPage() before calling send().
    myPrintJob.send();
 }
 
 
 AIR 2 或更新版本,您可以建立並使用多個 PrintJob 實體。在 PrintJob 實體中設定的屬性,在列印完成後仍繼續保留。這可以讓您重複使用 PrintJob 實體,並維持使用者選取的列印偏好設定,而不會對您應用程式中的其他內容提供不同的列印偏好設定。對於在 Flash Player 及 AIR 2 之前版本的內容,當第一個 PrintJob 物件仍在作用中時,不能建立第二個 PrintJob 物件。如果您在第一個 PrintJob 物件仍在作用中時,藉由呼叫 new PrintJob() 建立第二個 PrintJob 物件,則無法建立第二個 PrintJob 物件。 所以在建立第二個 PrintJob 前,您應該檢查 myPrintJob 值。
擲回值
IllegalOperationError  —  Flash Player 及 AIR 2 之前的 AIR 版本,如果有另一個 PrintJob 物件正在作用中,則會擲出例外。
 
  | 
相關 API 元素
addPage | () | 方法 | 
 public function addPage(sprite:Sprite, printArea:Rectangle = null, options:PrintJobOptions = null, frameNum:int = 0):void| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 1.0, Flash Player 9. | 
     會將指定的 Sprite 物件當作單一頁面,傳送至列印多工緩衝處理區域。 在使用此方法之前,您必須先建立 PrintJob 物件,然後使用 start() 或 start2()。接著,在呼叫 addPage() 一次或更多次以進行列印工作之後,使用 send() 將多工緩衝處理區域中的頁面傳送到印表機。換句話說,建立 PrintJob 物件之後,應依序使用 start()、start2()、addPage() 及 send(),將列印工作傳送至印表機。在對 start() 進行單次呼叫後,您可以多次呼叫 addPage(),在列印工作中列印多個頁面。
     
     
如果 addPage() 造成 Flash Player 擲出例外 (例如,如果您沒有呼叫 start(),或使用者取消列印工作),對於 addPage() 的任何後續呼叫也都會失敗。然而,如果先前以 addPage() 為目標的呼叫已經成功,則最後的 send() 命令便會將已成功排入多工緩衝處理區域的頁面傳送到印表機。
如果列印工作需要 15 秒鐘以上才能完成 addPage() 作業,Flash Player 便會在下次進行 addPage() 呼叫時擲出例外。
如果您傳遞 printArea 參數的值,printArea 矩形的 x 和 y 座標便會對應到頁面中可列印區域的左上角 (0, 0 座標)。唯讀屬性 pageHeight 和 pageWidth 會描述 start() 設定的可列印區域。由於列印結果會對齊頁面中可列印區域的左上角,所以當 printArea 中定義的區域大於頁面上的可列印區域時,列印結果便會裁切 printArea 所定義之區域的右側或底部 (或在兩處同時裁切)。 在 Flash Professional,如果您沒有傳遞 printArea 的值,而且「舞台」大於可列印區域,則會發生相同類型的裁切結果。在 Flex 或 Flash Builder,如果您沒有傳遞 printArea 的值,且螢幕大於可列印區域,則會發生相同類型的裁切結果。
如果您想要在列印之前縮放 Sprite 物件,請在呼叫這個方法之前設定縮放屬性 (請參閱 flash.display.DisplayObject.scaleX 與 flash.display.DisplayObject.scaleY),然後在列印後將它們設回原來的值。 Sprite 物件的縮放與 printArea 無關。 也就是說,如果您指定的列印區域為 50 x 50 像素,便會列印 2500 像素。 如果縮放 Sprite 物件,依然會列印相同的 2500 像素,不過會是以縮放的大小列印 Sprite 物件。
Flash Player 列印功能支援 PostScript 以及非 PostScript 印表機。 非 PostScript 印表機會將向量轉換成點陣圖。
參數
sprite:Sprite — 包含要列印內容的 Sprite。 
	 
	  | |
printArea:Rectangle (default = null) —  指定要列印之區域的 Rectangle 物件。	 
	 
	 矩形的寬度與高度都是像素值。 印表機會使用點做為列印度量單位。 點是固定的實體大小 (1/72 英吋),不過像素在螢幕上的大小則取決於特定螢幕的解析度。 因此,像素與點之間的轉換率,必須根據印表機設定及是否已縮放 sprite 來決定。 未縮放並具有 72 像素寬的 Sprite,會列印為一英吋的寬度,無論螢幕解析度為何,每一點都會等於一個像素。 您可以使用下列等式,將英吋或公分轉換成崔普 (twip) 或點 (1 崔普相當於 1/20 的點): 
 如果省略  如果您不想指定   | |
options:PrintJobOptions (default = null) — 選擇性參數,會指定列印為向量或點陣圖。 預設值為 null,代表要求進行向量列印。 若要將 sprite 列印為點陣圖,請將 PrintJobOptions 物件的 printAsBitmap 屬性設定為 true。 請在決定是否要將 printAsBitmap 設定為 true 時,記住下列建議:
	 
	 
 如果省略   | |
frameNum:int (default = 0) — 可讓您指定 MovieClip 物件中要列印之影格的選擇性數字。傳遞 frameNum 並不會在影格叫用 ActionScript。如果您省略這個參數,而 sprite 參數為 MovieClip 物件,則會列印 sprite 目前的影格。	 
	 
	  | 
擲回值
Error  — 如果您沒有呼叫 start(),或使用者取消列印工作,則會擲出例外。
	 
	 
	  | 
相關 API 元素
selectPaperSize | () | 方法 | 
 public function selectPaperSize(paperSize:String):void| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 2 | 
     設定紙張大小。paperSize 參數可接受的值,必須是 PaperSize 類別中的常數。呼叫這個方法對於列印設定的影響,就跟使用者在「頁面設定」或「列印」對話方塊中選擇頁面大小一樣。
     
     
您可以隨時呼叫這個方法。可以在列印工作開始之前呼叫這個方法,以便在「頁面設定」和「列印」對話方塊中設定預設紙張大小。在列印工作過程中呼叫這個函數,可在工作內之頁面範圍設定紙張大小。
     import flash.printing.PrintJob;
     import flash.printing.PaperSize;
     
     var myPrintJob:PrintJob = new PrintJob();
     myPrintJob.selectPaperSize(PaperSize.ENV_10);
     參數
paperSize:String — 列印工作後續頁面使用的紙張大小。
	 
	  | 
擲回值
ArgumentError  — 如果 paperSize 參數不是 PaperSize 類別已定義的可接受值之一。
     
      | 
相關 API 元素
send | () | 方法 | 
 public function send():void| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 1.0, Flash Player 9. | 
      在成功呼叫 start() 或 start2() 及 addPage() 方法後,傳送多工緩衝處理頁面到印表機。
	 
	 
如果呼叫 start() 或 start2() 方法失敗,或呼叫 addPage() 方法擲回例外,這個方法就不會成功。若要避免錯誤,請在呼叫這個方法之前,先檢查 start() 或 start2() 方法傳回 true,並捕捉任何 addPage() 例外。下列範例示範在呼叫這個方法之前,如何適當地檢查錯誤:
     var myPrintJob:PrintJob = new PrintJob();
     if (myPrintJob.start()) {
       try {
         myPrintJob.addPage([params]);
       }
       catch(e:Error) {
          // handle error 
       }
     
       myPrintJob.send();
     }
     相關 API 元素
showPageSetupDialog | () | 方法 | 
 public function showPageSetupDialog():Boolean| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 2 | 
     如果目前的環境可支援,顯示作業系統的「頁面設定」對話方塊。請使用 supportsPageSetupDialog 屬性判斷是否支援「頁面設定」。 
	 
	 
     import flash.printing.PrintJob;
     
     var myPrintJob:PrintJob = new PrintJob();
     if (myPrintJob.supportsPageSetupDialog)
     {
         myPrintJob.showPageSetupDialog();
     }
     Boolean — 如果使用者在「頁面設定」對話方塊中選擇「確定」,則為 true。這表示某些 PrintJob 屬性可能已經改變。如果使用者在「頁面設定」對話方塊中選擇「取消」,則傳回 false。
     
      | 
擲回值
IllegalOperationError  — 如果系統不支援「頁面設定」。請使用 supportsPageSetupDialog 屬性判斷是否支援「頁面設定」。 
	  | |
IllegalOperationError  — 如果有任何列印工作 (包括目前這個列印工作) 正在作用中。
     
      | 
相關 API 元素
start | () | 方法 | 
 public function start():Boolean| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 1.0, Flash Player 9., Flash Player 9. | 
     顯示作業系統的「列印」對話方塊,並開始進行多工緩衝處理。「列印」對話方塊讓使用者能變更列印設定。 當 PrintJob.start() 方法成功傳回時 (亦即使用者按一下「列印」對話方塊中的「確定」),便會填入下列屬性,代表使用者選擇的列印設定:
      
     
| 屬性 | 類型 | 單位 | 備註 | 
|---|---|---|---|
PrintJob.paperHeight | Number | Points | 整頁高度。 | 
PrintJob.paperWidth | Number | Points | 整頁寬度。 | 
PrintJob.pageHeight | Number | Points | 頁面上實際可列印區域的高度;會忽略所有使用者設定的邊界。 | 
PrintJob.pageWidth | Number | Points | 頁面上實際可列印區域的寬度;會忽略所有使用者設定的邊界。 | 
PrintJob.orientation | 字串 | "portrait" (flash.printing.PrintJobOrientation.PORTRAIT) 或 "landscape" (flash.printing.PrintJobOrientation.LANDSCAPE)。 | 
注意:如果使用者取消「列印」對話方塊,就不會填入這些屬性。
使用者在「列印」對話方塊中按一下「確定」以後,播放程式就會開始將多工緩衝處理的列印工作送到作業系統。 由於作業系統接著會對使用者顯示關於列印進度的資訊,所以您應該盡快呼叫 PrintJob.addPage() 與 PrintJob.send(),將這些頁面傳送至多工緩衝處理區域。 您可以使用此方法所填入的唯讀高度、寬度與方向屬性,來設定列印輸出之格式。
對 PrintJob.addPage() 與 PrintJob.send() 進行任何後續呼叫之前,請先測試並查看此方法是否傳回 true (當使用者在作業系統的「列印」對話方塊中按一下「確定」時):
     var myPrintJob:PrintJob = new PrintJob();
        if(myPrintJob.start()) {
          // addPage() and send() statements here
        }
     對於指定的列印工作實體,如果下列任何間隔超過 15 秒鐘,下一次呼叫 PrintJob.start() 便會傳回 false:
PrintJob.start()和第一個PrintJob.addPage()- 一個 
PrintJob.addPage()及下一個PrintJob.addPage() - 最後一個 
PrintJob.addPage()和PrintJob.send() 
Boolean — 如果使用者在「列印」對話方塊出現時按一下「確定」,值會是 true;如果使用者按一下「取消」或發生錯誤,則會是 false。
     
      | 
擲回值
IllegalOperationError  — 在 AIR 2 或更新版本,如果另一個 PrintJob 目前正在作用中
	 
      | 
相關 API 元素
start2 | () | 方法 | 
 public function start2(uiOptions:PrintUIOptions = null, showPrintDialog:Boolean = true):Boolean| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 2 | 
或者,會顯示作業系統的「列印」對話方塊、開始進行多工緩衝處理,並可能修改 PrintJob 唯讀屬性值。
uiOptions 參數允許呼叫者控制要在「列印」對話方塊顯示哪些選項。請參閱 PrintUIOptions 類別。如果 showPrintDialog 為 false,就會忽略這個參數。
即使 showPrintDialog 為 true,這個方法的行為會與 start() 方法不同。在一些作業系統上,start() 會顯示「頁面設定」對話方塊,然後顯示「列印」對話方塊。相反地,start2() 從不顯示「頁面設定」對話方塊。
在下列範例中,「列印」對話方塊的最小及最大頁面設定,是在對話方塊向使用者顯示之前就設定好:
     import flash.printing.PrintJob;
     import flash.printing.PrintUIOptions;
     
     var myPrintJob:PrintJob = new PrintJob();
     var uiOpt:PrintUIOptions = new PrintUIOptions();
     uiOpt.minPage = 1;
     uiOpt.maxPage = 3;
     var accepted:Boolean = myPrintJob.start2(uiOpt);
     參數
uiOptions:PrintUIOptions (default = null) — 指定「列印」對話方塊會向使用者顯示哪些選項的物件。如果 showPrintDialog 參數為 false,將會忽略這個值。
	 
	  | |
showPrintDialog:Boolean (default = true) — 在啟動列印工作之前,是否向使用者顯示「列印」對話方塊。
     
      | 
Boolean — 如果使用者在「列印」對話方塊出現時按一下「確定」,或如果「列印」對話方塊沒有顯示也沒有錯誤,值會是 true;如果使用者按一下「取消」或發生錯誤,則會是 false。
     
      | 
擲回值
IllegalOperationError  — 如果正在顯示「頁面設定」對話方塊,或其他列印工作目前正在作用中。
     
      | 
相關 API 元素
terminate | () | 方法 | 
 public function terminate():void| 語言版本: | ActionScript 3.0 | 
| 執行階段版本: | AIR 2 | 
     通知印列工作應該終止不應傳送。當列印工作已經由呼叫 start() 或 start2() 起始,但是不適合傳送任何頁面到印表機時,請使用這個方法。 一般而言,terminate() 只用於從錯誤中復原。
     
     
在呼叫這個方法之後,即可重複使用 PrintJob 實體。在可能的情況下,工作的設定都會保留供後續使用。
addPage() 方法會新增 Sprite 為單一頁面。send() 方法將頁面排入印表機。
package 
{ 
    import flash.printing.PrintJob; 
    import flash.display.Sprite; 
 
    public class BasicPrintExample extends Sprite 
    { 
        var myPrintJob:PrintJob = new PrintJob(); 
        var mySprite:Sprite = new Sprite();
        mySprite.graphics.beginFill(0x336699);
    mySprite.graphics.drawCircle(100, 100, 50);
 
        public function BasicPrintExample() 
        { 
            if (myPrintJob.start()) {
            try {
                myPrintJob.addPage(mySprite);
            }
            catch(e:Error) {
                // handle error 
            }
            myPrintJob.send();
        } 
    } 
}
PrintJobExample 建立一份小文件,然後將文件傳送至印表機。 這是透過下列步驟完成:
 - 宣告兩個名為 
sheet1與sheet2的 Sprite 類型變數。 - 呼叫 
init(),為sheet1和sheet2各指定新的 Sprite 實體,然後使用不同的引數呼叫createSheet()。 createSheet()會進行下列工作:- 使用傳入的 Sprite 物件,在 x = 0, y = 0 的位置繪製 100 (寬) x 200 (高) 像素的矩形,其背景為淺灰色,並具有寬度為一個像素的黑色邊框。
 - 使用和 Sprite 相同的尺寸、將 wordWrap 屬性設定為 
true並將要做為引數傳遞給createSheet()的文字屬性設定為 String,以建立新的 TextField 物件txt。 - 如果傳入的 Object 引數不是 null,則建立新的 Sprite 實體 
img,使用傳入 Object 的座標和尺寸屬性繪製一個白色矩形。 然後再將此白色矩形加入 Sprite 物件的顯示清單中 (藉由使用addChild())。 txt將 TextField 加入 Sprite 物件的顯示清單中 (藉由使用addChild())。
- 回到建構函式中,呼叫已啟用 (未標示註解) 的列印方法。 由於方法都非常相似,因此以下只說明 
printOnePerPage()。 printOnePerPage()會進行下列工作:- 宣告名為 
pj的新 PrintJob 物件,並將pagesToPrint宣告為 uint。 - 開啟作業系統原本的列印對話方塊,並等待使用者按一下 
OK。 - 檢查方向,如果選取的是「橫向」,便會擲回錯誤並結束。
 - 設定 
sheet1與sheet2的頁面高度及寬度。 - 使用 
addPage()將sheet1與sheet2傳送到列印多工緩衝處理區域。 - 如果要列印的頁數大於 0,便會列印多工緩衝處理區域中的所有頁面。
 
- 宣告名為 
 - 呼叫 
draw()方法,依據舞台大小調整這兩個 Sprite 屬性,並重新定位sheet2使它對齊sheet1的右端。 
注意: 根據偏好設定,會將建構函式設定為三種列印方法 (一張紙列印一頁、一張紙列印二頁或列印在紙張的上半部) 中的一種。 除非使用程式碼註解確實停用其中兩種列印方法,否則這個範例將不會正確運作。 這個範例的設定會呼叫 printOnePerPage()。
package {
    import flash.printing.PrintJob;
    import flash.printing.PrintJobOrientation;
    import flash.display.Stage;
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.geom.Rectangle;
       
    public class PrintJobExample extends Sprite {
        private var sheet1:Sprite;
        private var sheet2:Sprite;
           
        public function PrintJobExample() {
            init();
            printOnePerPage();
//            printTwoPerPage();
//            printTopHalf();
            draw();
        }
        
        private function init():void {
            sheet1 = new Sprite();
            createSheet(sheet1, "Once upon a time...", {x:10, y:50, width:80, height:130});
            sheet2 = new Sprite();
            createSheet(sheet2, "There was a great story to tell, and it ended quickly.\n\nThe end.", null);
        }
        
        private function createSheet(sheet:Sprite, str:String, imgValue:Object):void {
            sheet.graphics.beginFill(0xEEEEEE);
            sheet.graphics.lineStyle(1, 0x000000);
            sheet.graphics.drawRect(0, 0, 100, 200);
            sheet.graphics.endFill();
            
            var txt:TextField = new TextField();
            txt.height = 200;
            txt.width = 100;
            txt.wordWrap = true;
            txt.text = str;
            
            if(imgValue != null) {
                var img:Sprite = new Sprite();
                img.graphics.beginFill(0xFFFFFF);
                img.graphics.drawRect(imgValue.x, imgValue.y, imgValue.width, imgValue.height);
                img.graphics.endFill();
                sheet.addChild(img);
            }
            sheet.addChild(txt);
        }
        
        private function printOnePerPage():void {
            var pj:PrintJob = new PrintJob();
            var pagesToPrint:uint = 0;
            if(pj.start()) {                
                if(pj.orientation == PrintJobOrientation.LANDSCAPE) {    
                    throw new Error("Without embedding fonts you must print one sheet per page with an orientation of portrait.");
                }
                
                sheet1.height = pj.pageHeight;
                sheet1.width = pj.pageWidth;
                sheet2.height = pj.pageHeight;
                sheet2.width = pj.pageWidth;
                try {
                    pj.addPage(sheet1);
                    pagesToPrint++;
                }
                catch(e:Error) {
                    // do nothing
                }
                try {
                    pj.addPage(sheet2);
                    pagesToPrint++;
                }
                catch(e:Error) {
                    // do nothing
                }
                if(pagesToPrint > 0) {
                    pj.send();
                }
            }
        }
        
        private function printTwoPerPage():void {
            var pj:PrintJob = new PrintJob();
            var pagesToPrint:uint = 0;
            if(pj.start()) {                
                if(pj.orientation == PrintJobOrientation.PORTRAIT) {
                    throw new Error("Without embedding fonts you must print two sheets per page with an orientation of landscape.");
                }
                
                sheet1.height = pj.pageHeight;
                sheet1.width = pj.pageWidth/2;
                sheet2.height = pj.pageHeight;
                sheet2.width = pj.pageWidth/2;
                var sheets:Sprite = new Sprite();
                sheets.addChild(sheet1);
                sheets.addChild(sheet2);
                sheets.getChildAt(1).x = sheets.getChildAt(0).width;
                try {
                    pj.addPage(sheets);
                    pagesToPrint++;
                }
                catch(e:Error) {
                    // do nothing
                }
                if(pagesToPrint > 0) {
                    pj.send();
                }
            }
        }
        private function printTopHalf():void {
            var pj:PrintJob = new PrintJob();
            var pagesToPrint:uint = 0;
            if(pj.start()) {                
                if(pj.orientation == PrintJobOrientation.PORTRAIT) {
                    throw new Error("Without embedding fonts you must print the top half with an orientation of landscape.");
                }
                
                sheet1.height = pj.pageHeight;
                sheet1.width = pj.pageWidth/2;
                sheet2.height = pj.pageHeight;
                sheet2.width = pj.pageWidth/2;
                var sheets:Sprite = new Sprite();
                sheets.addChild(sheet1);
                sheets.addChild(sheet2);
                sheets.getChildAt(1).x = sheets.getChildAt(0).width;
                try {
                    pj.addPage(sheets, new Rectangle(0, 0, sheets.width, sheets.height/2));
                    pagesToPrint++;
                }
                catch(e:Error) {
                    // do nothing
                }
                if(pagesToPrint > 0) {
                    pj.send();
                }
            }
        }
        private function draw():void {
            var sheetWidth:Number = this.stage.stageWidth/2;
            var sheetHeight:Number = this.stage.stageHeight;
            
            addChild(sheet1);
            sheet1.width = sheetWidth;
            sheet1.height = sheetHeight;
            
            addChild(sheet2);
            sheet2.width = sheetWidth;
            sheet2.height = sheetHeight;
            sheet2.x = sheet1.width;
        }        
    }
}
 
package 
 { 
     import flash.display.Sprite; 
     import flash.display.Stage; 
     import flash.geom.Rectangle; 
     import flash.printing.PaperSize; 
     import flash.printing.PrintJob; 
    import flash.printing.PrintJobOrientation; 
    import flash.printing.PrintUIOptions; 
    import flash.text.TextField; 
      
     public class PrintJobExample extends Sprite 
     { 
         private var bg:Sprite; 
         private var txt:TextField; 
        private var pj:PrintJob; 
        private var uiOpt:PrintUIOptions; 
  
         public function PrintJobExample():void 
         { 
            var pj = new PrintJob(); 
            uiOpt = new PrintUIOptions(); 
            initPrintJob(); 
             initContent(); 
             draw(); 
             printPage(); 
         } 
          
         private function printPage():void 
         { 
            if (pj.supportsPageSetupDialog) 
            { 
                pj.showPageSetupDialog(); 
            }
            
             if (pj.start2(uiOpt, true)) 
             { 
                   try 
                 { 
                     pj.addPage(this, new Rectangle(0, 0, 100, 100)); 
                 } 
                 catch (error:Error) 
                 { 
                     // Do nothing. 
                 } 
                 pj.send(); 
             } 
             else 
             { 
                 txt.text = "Print job terminated"; 
                pj.terminate(); 
             } 
         } 
         
         private function initContent():void 
         { 
             bg = new Sprite(); 
             bg.graphics.beginFill(0x00FF00); 
             bg.graphics.drawRect(0, 0, 100, 200); 
             bg.graphics.endFill(); 
              
             txt = new TextField(); 
             txt.border = true; 
             txt.text = "Hello World"; 
         } 
          
        private function initPrintJob():void 
        { 
            pj.setPaperSize(PaperSize.LEGAL); 
            pj.orientation = PrintJobOrientation.LANDSCAPE; 
            pj.copies = 2; 
            pj.jobName = "Flash test print";
        } 
         
         private function draw():void 
         { 
             addChild(bg); 
             addChild(txt); 
             txt.x = 50; 
             txt.y = 50; 
         } 
     } 
}
Tue Jun 12 2018, 03:47 PM Z
 
 隱藏繼承公用屬性
 顯示繼承公用屬性