Adobe Flex 3 ヘルプ

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

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

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

サブトピック



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

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

  • 特定のプロパティを持つ Rectangle オブジェクトをあらかじめ作成し、それを次のように addPage() の呼び出しで使用します。
    private var rect1:Rectangle = new Rectangle(0, 0, 400, 200);
    myPrintJob.addPage(sheet, rect1);
    
    
  • Rectangle オブジェクトをあらかじめ指定せずに、次のように呼び出しの時点で Rectangle オブジェクトを直接指定することもできます。
    myPrintJob.addPage(sheet, new Rectangle(0, 0, 100, 100));
    
    
  • addPage() 呼び出しの第 3 パラメータに値を指定する場合に、プリント範囲の矩形を指定しないようにするには、次のように、第 2 パラメータとして null を渡します。
    myPrintJob.addPage(sheet, null, options);
    
    

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

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

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

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

  • 1 ポイント = 1/72 インチ = 20 twip
  • 1 インチ = 72 ポイント = 1440 twip
  • 1 センチメートル = 567 twip

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

拡大 / 縮小

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

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

用紙の向きを Landscape(横方向)または Portrait(縦方向)に指定したプリント

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

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

注意:

注意:import flash.printing.PrintJobOrientation;

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

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

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

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

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

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

 

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