サイズ、拡大率、用紙の向きの設定

ページのプリントセクションで詳しく説明している基本的なプリントジョブ実行手順の場合は、指定したスプライトの画面サイズおよび位置を直接に反映した同等のプリントが出力されます。しかし、プリンタの解像度は環境によって異なり、また、プリンタの設定によってスプライトのプリント結果に悪影響が出る場合もあります。

Flash Player はオペレーティングシステムの印刷設定を読み取ることができますが、そのようなプロパティは読み取り専用です。値に応答することはできても、設定することはできません。したがって、プリンタの用紙サイズ設定を調べた後は、コンテンツのサイズなどを調整してプリンタに合わせることになります。また、プリンタの余白や用紙の向きに関する設定を調べることもできます。プリンタの設定に合わせるには、プリント範囲の指定、画面解像度とプリンタのポイント尺度との違いに関する調整、用紙のサイズと向きに応じた幾何学変換などが必要となります。

サブトピック

矩形によるプリント範囲の指定
ポイントとピクセルの比較
拡大 / 縮小
用紙の向きが Landscape (横方向) または Portrait (縦方向) である場合のプリント
ページの幅と高さへの対応

矩形によるプリント範囲の指定

PrintJob.addPage() メソッドでは、スプライトのうちプリントの対象とする範囲を指定できます。それには、第 2 パラメータの printArea として Rectangle オブジェクトを指定します。このパラメータの値については、次の 3 つの指定方法があります。

メモ

 

プリント寸法を矩形で指定する場合は、flash.display.Rectangle クラスを import で読み込んでください。

ポイントとピクセルの比較

矩形の幅と高さはピクセル値です。一方、プリンタで使用する測定単位はポイントです。ポイントの物理サイズは固定 (1/72 インチ) ですが、画面上のピクセルのサイズは解像度によって異なります。したがって、ピクセル値とポイント値の変換比率は、プリンタの設定と、スプライトが拡大または縮小されているかどうかによって変化します。72 ピクセル幅の伸縮されていない Sprite は、用紙上では 1 インチ幅で印刷されます。1 ポイントは 1 ピクセルに相当し、画面の解像度とは無関係です。

インチおよびセンチメートルと、ポイントおよび twip (1/20 ポイント) との間には、次の等式が成り立ちます。

printArea パラメータを省略するか、このパラメータの指定が正しくない場合は、スプライト全体がプリントされます。

拡大 / 縮小

印刷前に Sprite オブジェクトを拡大 / 縮小するには、PrintJob.addPage() メソッドを呼び出す前に拡大 / 縮小のプロパティ (サイズの変更とオブジェクトの拡大 / 縮小 を参照) を設定します。印刷後、これらのプロパティを元の値に戻します。Sprite オブジェクトの拡大 / 縮小は、printArea プロパティとは無関係です。つまり、50 x 50 ピクセルのプリント範囲を指定した場合は常に 2500 個のピクセルがプリントされます。Sprite オブジェクトを拡大または縮小している場合、その設定を反映してプリント結果は伸縮しますが、プリントの対象となる 2500 個のピクセルは変わりません。

例については、例 : 拡大 / 縮小、トリミング、および応答を参照してください。

用紙の向きが Landscape (横方向) または Portrait (縦方向) である場合のプリント

Flash Player では用紙の向きに関する設定を検出できるため、次の例に示すように、プリンタ設定に応じてコンテンツのサイズや向きを調整するロジックを ActionScript に組み込むことができます。

if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE)
{
    mySprite.rotation = 90;
}

メモ

 

用紙の向きを調べるためにシステムの設定を読み取る場合は、次のように PrintJobOrientation クラスを import で読み込んでください。

import flash.printing.PrintJobOrientation;

PrintJobOrientation クラスには、用紙の向きを表す定数値が定義されています。

ページの幅と高さへの対応

用紙の向きに関する設定情報を扱う場合と同様、次のように if ステートメントで囲んだロジックを記述することで、ページの幅と高さの設定を読み取り、それに応じた処理ができます。その例を次のコードに示します。

if (mySprite.height > myPrintJob.pageHeight)
{
    mySprite.scaleY = .75;
}

また、余白の設定を調べるには、次のように用紙の寸法とページの寸法を比較します。

margin_height = (myPrintJob.paperHeight - myPrintJob.pageHeight) / 2;
margin_width = (myPrintJob.paperWidth - myPrintJob.pageWidth) / 2;

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000334.html