在
列印頁面
一節中將詳細說明基本列印工作的步驟,步驟中的輸出將直接反映出列印後的對等螢幕大小和指定之 Sprite 的位置。但是,因為印表機會使用不同的列印解析度,而且不同的設定也會影響列印後 Sprite 的外觀。
Flash 執行階段可以讀取作業系統的列印設定,但必須注意的是這些屬性是唯讀性質:雖然您仍然可以回應它們的值,但不能設定它們的值。因此,舉例來說,您可以依據印表機的頁面大小設定來調整內容以符合大小。您也可以決定印表機的邊界設定和頁面方向。若要回應印表機設定,請指定列印區域、調整螢幕解析度與印表機點數度量之間的差異,或轉換內容以符合使用者印表機的大小或列印方向設定。
使用矩形做為列印區域
PrintJob.addPage()
方法可讓您指定要列印之 Sprite 的區域。第二個參數
printArea
的形式為 Rectangle 物件。有三種方式可用來提供這個參數的值:
-
建立具有特定屬性的 Rectangle 物件,然後在
addPage()
呼叫中使用這個矩形,如下列範例所示:
private var rect1:Rectangle = new Rectangle(0, 0, 400, 200);
myPrintJob.addPage(sheet, rect1);
-
如果尚未指定 Rectangle 物件,您可以在該呼叫本身中指定這個物件,如下列範例所示:
myPrintJob.addPage(sheet, new Rectangle(0, 0, 100, 100));
-
若要提供
addPage()
呼叫中第三個參數的值,但是不想指定矩形時,可以使用
null
做為第二個參數的值,如下所示。
myPrintJob.addPage(sheet, null, options);
比較點與像素
矩形的寬度與高度都是像素值。印表機會使用點做為列印度量單位。點是固定的實體大小 (1/72 英吋),不過像素在螢幕上的大小則取決於特定螢幕的解析度。因此,像素與點之間的轉換率,必須根據印表機設定及是否已縮放 Sprite 來決定。未縮放並具有 72 像素寬的 Sprite,將會列印為一英吋的寬度,無論螢幕解析度為何,每一點都會等於一個像素。
您可以使用下列等式,將英吋或公分轉換成崔普 (twip) 或點 (1 崔普相當於 1/20 的點):
-
1 點 = 1/72 英吋 = 20 崔普
-
1 英吋 = 72 點 = 1440 崔普
-
1 公分 = 567 崔普
如果省略
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;
|
|
|