パッケージflash.printing
public class PrintJob
継承PrintJob Inheritance EventDispatcher Inheritance Object

PrintJob クラスを使用すると、コンテンツを作成して 1 ページまたは複数のページに印刷できます。このクラスを使用すると、可視状態のコンテンツをダイナミックまたは画面外でレンダリングし、単一の [印刷] ダイアログボックスを使用して、コンテンツの縦横比を保持しつつ伸縮せずにドキュメントを印刷できます。この機能は、データベースコンテンツやダイナミックテキストなどダイナミックコンテンツをレンダリングおよび印刷するときに特に便利です。

印刷ジョブを作成し始めるには、コンストラクタ PrintJob() を使用します。

さらに、PrintJob.start() によって得られるプロパティを使用すると、ドキュメントからユーザーのプリンタ設定 (用紙の高さ、幅、イメージの方向など) にアクセスすることができ、プリンタの設定に合わせて Flash のコンテンツを動的にフォーマットするようにドキュメントを構成することができます。PrintJob.start() によって格納されるこれらのレイアウトプロパティは読み取り専用で、Flash Player で変更できません。

メモ : ActionScript 3.0 では、ActionScript の以前のバージョンと同様、PrintJob オブジェクトが単一フレームに制限されません。ただし、[印刷] ダイアログボックスで [OK] ボタンをクリックすると印刷ステータス情報が表示されるため、ページをスプーラに送信したらただちに PrintJob.addPage() および PrintJob.send() を呼び出す必要があります。PrintJob.send() 呼び出しの格納されたフレームに遅延が到達すると、印刷処理が遅延します。

また、次の間隔には、15 秒のスクリプトのタイムアウト制限が適用されます。

上記の間隔が 15 秒以上である場合、PrintJob インスタンスの次回の PrintJob.start() を呼び出すと false が返されます。PrintJob インスタンスの次回の PrintJob.addPage() によって、Flash Player はランタイム例外をスローします。

関連項目

ActionScript 3.0 における PrintJob クラスの新機能


パブリックプロパティ
 プロパティ定義
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  orientation : String
[read-only] 印刷するイメージの向き。
PrintJob
  pageHeight : int
[read-only] ページ上で実際に印刷可能な領域の高さ (ポイント単位)
PrintJob
  pageWidth : int
[read-only] ページ上で実際に印刷可能な領域の幅 (ポイント単位)。
PrintJob
  paperHeight : int
[read-only] 用紙全体の高さ (ポイント単位)
PrintJob
  paperWidth : int
[read-only] 用紙全体の幅 (ポイント単位)
PrintJob
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリック Methods
 メソッド定義
  
ページを印刷できる PrintJob オブジェクトを作成します。
PrintJob
 Inherited
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 オブジェクトを 1 ページとして印刷スプーラに送ります。
PrintJob
 Inherited
イベントをイベントフローに送出します。
EventDispatcher
 Inherited
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 Inherited
指定されたプロパティがオブジェクトに定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
  
PrintJob.start()PrintJob.addPage() が成功した後、スプールしたページをプリンタに送信します。
PrintJob
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  
オペレーティングシステムの [印刷] ダイアログボックスを表示し、スプールを開始し、PrintJob の読み取り専用プロパティ値を設定します。
PrintJob
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
 Inherited
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント一覧定義
 Inherited Flash Player がオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。EventDispatcher
 Inherited Flash Player がオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。EventDispatcher
プロパティの詳細
orientationプロパティ
orientation:String  [read-only]

印刷するイメージの向き。このプロパティは PrintJobOrientation クラスからの値です。このプロパティは、PrintJob.start() メソッドの呼び出し後にのみ使用可能になります。

実装
    public function get orientation():String

関連項目

pageHeightプロパティ 
pageHeight:int  [read-only]

ページ上で実際に印刷可能な領域の高さ (ポイント単位)ユーザーが設定した余白は含みません。このプロパティは、PrintJob.start() メソッドの呼び出し後にのみ使用可能になります。

実装
    public function get pageHeight():int

関連項目

pageWidthプロパティ 
pageWidth:int  [read-only]

ページ上で実際に印刷可能な領域の幅 (ポイント単位)。ユーザーが設定した余白は含みません。このプロパティは、PrintJob.start() メソッドの呼び出し後にのみ使用可能になります。

実装
    public function get pageWidth():int

関連項目

paperHeightプロパティ 
paperHeight:int  [read-only]

用紙全体の高さ (ポイント単位)このプロパティは、PrintJob.start() メソッドの呼び出し後にのみ使用可能になります。

実装
    public function get paperHeight():int
paperWidthプロパティ 
paperWidth:int  [read-only]

用紙全体の幅 (ポイント単位)このプロパティは、PrintJob.start() メソッドの呼び出し後にのみ使用可能になります。

実装
    public function get paperWidth():int
コンストラクタの詳細
PrintJob()コンストラクタ
public 関数 PrintJob()

ページを印刷できる PrintJob オブジェクトを作成します。PrintJob オブジェクトを作成したら、PrintJob.start()PrintJob.addPage()PrintJob.send() の順にメソッドを使用して、プリンタに印刷ジョブを送信します。

たとえば次のコードに示される my_pj.addPage() メソッド呼び出しの [params] プレースホルダーテキストをカスタムパラメータと置き換えできます。

 // create PrintJob object
 var my_pj:PrintJob = new PrintJob();
  
 // display Print dialog box, but only initiate the print job
 // if start returns successfully.
 if (my_pj.start()) {
  
    // add specified page to print job
    // repeat once for each page to be printed
    try {
      my_pj.addPage([params]);
    }
    catch(e:Error) {
      // handle error 
    }
    try {
      my_pj.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().
    my_pj.send();
 }
 

最初の PrintJob オブジェクトがアクティブである間は、2 つ目の PrintJob オブジェクトを作成できません。1 つ目の PrintJob オブジェクトがアクティブであるときに new PrintJob() を呼び出して 2 つ目の PrintJob オブジェクトを作成しようとしても、2 つ目の PrintJob オブジェクトは生成されません。そのため 2 つ目の PrintJob を作成する前に my_pj 値を確認することができます。


スロー
IllegalOperationError — 別の PrintJob オブジェクトがアクティブなままである場合は、例外をスローします。

関連項目

メソッドの詳細
addPage()メソッド
public function addPage(sprite:Sprite, printArea:Rectangle = null, options:PrintJobOptions = null, frameNum:int = 0):void

指定の Sprite オブジェクトを 1 ページとして印刷スプーラに送ります。このメソッドを使用する前に、PrintJob オブジェクトを作成し、PrintJob.start() を使用する必要があります。次に、印刷ジョブに対して PrintJob.addPage() を 1 回または複数回呼び出した後、 PrintJob.send() を使用して、スプールしたページをプリンタに送信します。つまり、PrintJob オブジェクトを作成したら、PrintJob.start() PrintJob.addPage()PrintJob.send() の順にメソッドを使用して、プリンタに印刷ジョブを送信します。PrintJob.start() を 1 回呼び出した後で PrintJob.addPage() を複数回使用することにより、複数のページを 1 回で印刷できます。

PrintJob.addPage() によって Flash Player が例外をスローした場合 (PrintJob.start() を呼び出していない場合や、ユーザーが印刷ジョブをキャンセルした場合など) は、その後で PrintJob.addPage() を呼び出すと失敗します。ただし、それまでに PrintJob.addPage() の呼び出しが成功していれば、最後に PrintJob.send() コマンドを実行することで、スプールに成功したすべてのページがプリンタに送られます。

印刷ジョブで PrintJob.addPage() 操作の完了に 15 秒以上かかる場合、Flash Player は、次回の Print.addPage() の呼び出しに例外をスローします。

printArea パラメータの値を渡すと、printArea オブジェクトの x 座標と y 座標がページの印刷可能領域の左上隅 (0,0 座標) に対応します。印刷可能領域は、PrintJob.start() で設定した読み取り専用の pageHeight プロパティと pageWidth プロパティで表されます。印刷結果はページ上の印刷可能領域の左上隅を基準に整列されるので、printArea で定義した領域が用紙上の印刷可能領域よりも大きい場合は、printArea で定義した領域の右側または下側の部分 (またはその両方) は切り取られることがあります。printArea の値を指定しない場合にステージが印刷可能領域より大きいときも、同様の切り取りが発生します。printArea の値を指定しない場合にスクリーンが印刷可能領域より大きいときも、同様の切り取りが発生します。

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

Flash Player の印刷機能は、PostScript プリンタと非 PostScript プリンタをサポートしています。非 PostScript プリンタでは、ベクターはビットマップに変換されます。

パラメータ
sprite:Sprite — 印刷する Sprite のインスタンス名。
 
printArea:Rectangle (default = null) — 印刷する領域を指定する Rectangle オブジェクト。

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

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

  • 1 ポイント = 1/72 インチ = 20 twip
  • 1 インチ = 72 ポイント = 1440 twip
  • 1 cm = 567 twips

printArea パラメータを省略した場合、または間違った値を指定した場合は、sprite の全ステージ領域が印刷されます。

printArea の値を指定せずに、options または frameNum の値を指定するには、printAreanull を指定します。

 
options:PrintJobOptions (default = null) — ベクターとビットマップのどちらで印刷するかを指定する、オプションのパラメータ。デフォルト値は null で、これはベクター形式を示します。sprite をビットマップとして印刷するには、PrintJobOptions オブジェクトの printAsBitmap プロパティを true に設定します。printAsBitmaptrue に設定するかどうかを決めるときには、次の項目に留意してください。
  • 印刷するコンテンツにビットマップイメージが含まれる場合は、アルファ透明効果とカラー効果を含めるために printAsBitmaptrue に設定します。
  • コンテンツにビットマップイメージが含まれない場合は、このパラメータを省略するかして、より品質の高いベクター形式で印刷します。

options を省略した場合、または間違った値を渡した場合は、ベクター形式が使用されます。options の値を指定せずに、frameNumber の値を指定するには、optionsnull を指定します。

 
frameNum:int (default = 0)印刷するフレームを指定できるオプションの数値。frameNum を渡しても、そのフレームの ActionScript は呼び出されません。このパラメータを省略すると、sprite 内の現在のフレームが印刷されます。Flash オーサリング環境で使用できるオプションの数値。Flex アプリケーションを記述する場合には、このパラメータを省略するか、値 0 を指定します。

メモ : 以前 print()printAsBitmap()printAsBitmapNum()、または printNum() を使用して印刷した場合、印刷するページを指定するために複数のフレームで #p フレームラベルを使用するという方法がありました。PrintJob.addPage() を使用して複数のフレームを印刷するには、フレームごとに PrintJob.addPage() メソッドを使う必要があります。#p フレームラベルは無視されます。プログラムで行う方法については、「例」のセクションを参照してください。


スロー
Error PrintJob.start() を呼び出さなかった場合、またはユーザーが印刷ジョブをキャンセルした場合、例外がスローされます。

関連項目

send()メソッド 
public function send():void

PrintJob.start()PrintJob.addPage() が成功した後、スプールしたページをプリンタに送信します。PrintJob.start() の呼び出しが失敗した場合、または PrintJob.addpage() が例外をスローした場合、PrintJob.send() の呼び出しは成功しません。そのため PrintJob.start()true を返すことを確認し、PrintJob.send() の呼び出し前に PrintJob.addpage() 例外をキャッチしてください。たとえば、次のようになります。

  var my_pj:PrintJob = new PrintJob();
    if (my_pj.start()) {
    try {
      my_pj.addPage([params]);
   }
    catch(e:Error) {
      // handle error 
   }
      my_pj.send();
  }
  

関連項目

start()メソッド 
public function start():Boolean

オペレーティングシステムの [印刷] ダイアログボックスを表示し、スプールを開始し、PrintJob の読み取り専用プロパティ値を設定します。ユーザーは [印刷] ダイアログボックスで印刷設定を変更できます。PrintJob.start() メソッドが正常に返された場合、つまりユーザーが [印刷] ダイアログボックスで [OK] をクリックした場合、次の読み取り専用プロパティに値が渡され、ユーザーの現在の印刷設定を表します。

プロパティ 単位 注意事項
PrintJob.paperHeight 数値 ポイント 用紙の高さ
PrintJob.paperWidth 数値 ポイント 用紙全体の幅
PrintJob.pageHeight 数値 ポイント 用紙上の実際の印刷可能領域の高さ。ユーザーが設定した余白は含みません。
PrintJob.pageWidth 数値 ポイント 用紙上の実際の印刷可能領域の幅。ユーザーが設定した余白は含みません。
PrintJob.orientation ストリング "portrait" (flash.printing.PrintJobOrientation.PORTRAIT) または "landscape" (flash.printing.PrintJobOrientation.LANDSCAPE)。

メモ : [印刷] ダイアログボックスでキャンセルすると、プロパティは設定されません。

ユーザーが [印刷] ダイアログボックスで [OK] をクリックすると、オペレーティングシステムへの印刷ジョブのスプールが開始されます。オペレーティングシステムで印刷の進行状況について情報が表示されるため、ページをスプーラに送信したらただちに PrintJob.addPage() および PrintJob.send() を呼び出す必要があります。このメソッドに値を渡す読み取り専用の高さ、幅、方向のプロパティを使用し、印刷結果をフォーマットできます。

PrintJob.addPage()PrintJob.send() を呼び出す前に、このメソッドが true を返すこと (ユーザーがオペレーティングシステムの [印刷] ダイアログボックスで [OK] をクリックした場合) を確認するために、テストを行います。

  var my_pj:PrintJob = new PrintJob();
     if(my_pj.start()) {
       // addPage() and send() statements here
     }
  

指定された印刷ジョブインスタンスの場合、次のいずれかの間隔が 15 秒以上である場合、次回の PrintJob.start() を呼び出すと false が返されます。

戻り値
Boolean — [印刷] ダイアログボックスでユーザーが [OK] をクリックした場合は true、ユーザーが [キャンセル] をクリックした場合、またはエラーが発生した場合は false を返します。

関連項目