設定大小、縮放與列印方向Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本 在列印頁面一節中將詳細說明基本列印工作的步驟,步驟中的輸出將直接反映出列印後的對等螢幕大小和指定之 Sprite 的位置。但是,因為印表機會使用不同的列印解析度,而且不同的設定也會影響列印後 Sprite 的外觀。 Flash 執行階段可以讀取作業系統的列印設定,但必須注意的是這些屬性是唯讀性質:雖然您仍然可以回應它們的值,但不能設定它們的值。因此,舉例來說,您可以依據印表機的頁面大小設定來調整內容以符合大小。您也可以決定印表機的邊界設定和頁面方向。若要回應印表機設定,請指定列印區域、調整螢幕解析度與印表機點數度量之間的差異,或轉換內容以符合使用者印表機的大小或列印方向設定。 使用矩形做為列印區域PrintJob.addPage() 方法可讓您指定要列印之 Sprite 的區域。第二個參數 printArea 的形式為 Rectangle 物件。有三種方式可用來提供這個參數的值:
比較點與像素矩形的寬度與高度都是像素值。印表機會使用點做為列印度量單位。點是固定的實體大小 (1/72 英吋),不過像素在螢幕上的大小則取決於特定螢幕的解析度。因此,像素與點之間的轉換率,必須根據印表機設定及是否已縮放 Sprite 來決定。未縮放並具有 72 像素寬的 Sprite,將會列印為一英吋的寬度,無論螢幕解析度為何,每一點都會等於一個像素。 您可以使用下列等式,將英吋或公分轉換成崔普 (twip) 或點 (1 崔普相當於 1/20 的點):
如果省略 printArea 參數,或是它並未正確傳遞,則會列印 Sprite 的整個區域。 縮放如果您想要在列印之前縮放 Sprite 物件,請在呼叫 PrintJob.addPage() 方法之前設定縮放屬性 (請參閱調整大小及縮放物件),然後在列印後將它們設回原來的值。Sprite 物件的縮放與 printArea 屬性無關。換句話說,如果您指定要列印大小為 50 x 50 像素的區域,就會印出面積為 2500 像素的區域。如果縮放 Sprite 物件,依然會列印相同的 2500 像素,不過會是以縮放的大小列印 Sprite 物件。 如需範例,請參閱列印範例:縮放、裁切和回應。 橫向或縱向列印由於 Flash Player 和 AIR 可以偵測列印方向設定,因此您可以在 ActionScript 內建立邏輯,調整內容大小及旋轉以符合印表機設定,如下列範例所示: if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE) { mySprite.rotation = 90; } 備註: 如果您要讀取紙張內容列印方向的系統設定,請務必匯入 PrintJobOrientation 類別。PrintJobOrientation 類別可以提供常數值,定義頁面的內容列印方向。您可以使用下列陳述式匯入這個類別:
import flash.printing.PrintJobOrientation; 回應頁面高度和寬度您可以利用與處理印表機列印方向設定類似的方式,讀取頁面高度和寬度設定,並在 if 陳述式中嵌入一些邏輯來回應這些設定。下列程式碼為您示範這種範例: if (mySprite.height > myPrintJob.pageHeight) { mySprite.scaleY = .75; } 此外,藉由比較頁面與紙張的尺寸也可以設定頁面的邊界,如下列範例所示: margin_height = (myPrintJob.paperHeight - myPrintJob.pageHeight) / 2; margin_width = (myPrintJob.paperWidth - myPrintJob.pageWidth) / 2; |
|