| パッケージ | flash.printing |
| クラス | public class PrintJob |
| 継承 | PrintJob EventDispatcher Object |
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
印刷ジョブを作成し始めるには、コンストラクタ PrintJob() を使用します。
さらに、PrintJob.start() によって得られるプロパティを使用すると、ドキュメントからユーザーのプリンタ設定 (用紙の高さ、幅、イメージの方向など) にアクセスすることができ、プリンタの設定に合わせて Flash のコンテンツを動的にフォーマットするようにドキュメントを構成することができます。PrintJob.start() によって格納されるこれらのレイアウトプロパティは読み取り専用で、Flash Player で変更できません。
メモ : ActionScript 3.0 では、ActionScript の以前のバージョンと同様に、PrintJob オブジェクトが単一フレームに制限されません。ただし、[印刷] ダイアログボックスで [OK] ボタンをクリックすると印刷ステータス情報が表示されるため、ページをスプーラに送信したら直ちに PrintJob.addPage() および PrintJob.send() を呼び出す必要があります。PrintJob.send() 呼び出しの格納されたフレームに遅延が到達すると、印刷処理が遅延します。
また、次の間隔には、15 秒のスクリプトのタイムアウト制限が適用されます。
PrintJob.start() および 1 つ目の PrintJob.addPage()PrintJob.addPage() および 2 つ目の PrintJob.addPage()PrintJob.addPage() および PrintJob.send()上記の間隔が 15 秒以上である場合、PrintJob インスタンスの次回の PrintJob.start() を呼び出すと false が返されます。PrintJob インスタンスの次回の PrintJob.addPage() によって、Flash Player はランタイム例外をスローします。
関連項目
| プロパティ | 定義元 | ||
|---|---|---|---|
![]() | constructor : 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 | ||
![]() | prototype : Object
[static]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
| Object | |
| メソッド | 定義元 | ||
|---|---|---|---|
|
PrintJob()
ページを印刷できる PrintJob オブジェクトを作成します。
| PrintJob | ||
![]() |
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 | ||
![]() |
イベントをイベントフローに送出します。
| EventDispatcher | |
![]() |
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
| EventDispatcher | |
![]() |
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
| Object | |
![]() |
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | |
![]() |
指定されたプロパティが存在し列挙できるかどうかを示します。
| Object | |
![]() |
EventDispatcher オブジェクトからリスナーを削除します。
| EventDispatcher | |
|
PrintJob.start() と PrintJob.addPage() が成功した後、スプールしたページをプリンタに送信します。
| PrintJob | ||
![]() |
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | |
|
オペレーティングシステムの [印刷] ダイアログボックスを表示し、スプールを開始し、PrintJob の読み取り専用プロパティ値を設定します。
| PrintJob | ||
![]() |
指定されたオブジェクトのストリング表現を返します。
| Object | |
![]() |
指定されたオブジェクトのプリミティブな値を返します。
| Object | |
![]() |
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
| EventDispatcher | |
| orientation | プロパティ |
orientation:String [read-only]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9. |
印刷するイメージの向き。このプロパティは PrintJobOrientation クラスからの値です。このプロパティは、PrintJob.start() メソッドの呼び出し後にのみ使用可能になります。
public function get orientation():String
関連項目
| pageHeight | プロパティ |
pageHeight:int [read-only]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9. |
ページ上で実際に印刷可能な領域の高さ (ポイント単位)。ユーザーが設定した余白は含みません。このプロパティは、PrintJob.start() メソッドの呼び出し後にのみ使用可能になります。
public function get pageHeight():int
関連項目
| pageWidth | プロパティ |
pageWidth:int [read-only]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9. |
ページ上で実際に印刷可能な領域の幅 (ポイント単位)。ユーザーが設定した余白は含みません。このプロパティは、PrintJob.start() メソッドの呼び出し後にのみ使用可能になります。
public function get pageWidth():int
関連項目
| paperHeight | プロパティ |
paperHeight:int [read-only]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9. |
用紙全体の高さ (ポイント単位)。このプロパティは、PrintJob.start() メソッドの呼び出し後にのみ使用可能になります。
public function get paperHeight():int
| paperWidth | プロパティ |
paperWidth:int [read-only]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9. |
用紙全体の幅 (ポイント単位)。このプロパティは、PrintJob.start() メソッドの呼び出し後にのみ使用可能になります。
public function get paperWidth():int
| PrintJob | () | コンストラクタ |
public function PrintJob()
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
ページを印刷できる 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
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9. |
指定の 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 の値を指定しない場合にステージが印刷可能領域より大きいときも、同様の切り取りが発生します。
印刷前に Sprite オブジェクトを拡大/縮小するには、このメソッドを呼び出す前に拡大 / 縮小のプロパティ (flash.display.DisplayObject.scaleX および flash.display.DisplayObject.scaleY を参照) を設定します。印刷後、これらのプロパティを元の値に戻します。Sprite オブジェクトの拡大 / 縮小は、printArea とは無関係です。つまり、サイズが 50 × 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) やポイントとの対応を示します。
|
|
options:PrintJobOptions (default = null) — ベクターとビットマップのどちらで印刷するかを指定する、オプションのパラメータ。デフォルト値は null で、これはベクター形式を示します。sprite をビットマップとして印刷するには、PrintJobOptions オブジェクトの printAsBitmap プロパティを true に設定します。printAsBitmap を true に設定するかどうかを決めるときには、次の項目に留意してください。
|
|
frameNum:int (default = 0) — 印刷するフレームを指定できるオプションの数値。frameNum を渡しても、そのフレームの ActionScript は呼び出されません。このパラメータを省略すると、sprite 内の現在のフレームが印刷されます。
メモ : |
Error — PrintJob.start() を呼び出さなかった場合、またはユーザーが印刷ジョブをキャンセルした場合、例外がスローされます。
|
関連項目
| send | () | メソッド |
public function send():void
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9. |
PrintJob.start() と PrintJob.addPage() が成功した後、スプールしたページをプリンタに送信します。PrintJob.start() の呼び出しが失敗した場合、または PrintJob.addpage() が例外をスローした場合、PrintJob.send() の呼び出しは成功しません。そのため、PrintJob.start() が true を返すことを確認し、PrintJob.addpage() 例外を PrintJob.send() の呼び出しの前にキャッチしてください。次に例を示します。
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
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9. |
オペレーティングシステムの [印刷] ダイアログボックスを表示し、スプールを開始し、PrintJob の読み取り専用プロパティ値を設定します。ユーザーは [印刷] ダイアログボックスで印刷設定を変更できます。PrintJob.start() メソッドが正常に返された場合、つまりユーザーが [印刷] ダイアログボックスで [OK] をクリックした場合、次の読み取り専用プロパティに値が渡され、ユーザーの現在の印刷設定を表します。
| プロパティ | タイプ | 単位 | 説明 |
|---|---|---|---|
PrintJob.paperHeight | Number | ポイント | 用紙の高さ |
PrintJob.paperWidth | Number | ポイント | 用紙全体の幅 |
PrintJob.pageHeight | Number | ポイント | 用紙上の実際の印刷可能領域の高さ。ユーザーが設定した余白は含みません。 |
PrintJob.pageWidth | Number | ポイント | 用紙上の実際の印刷可能領域の幅。ユーザーが設定した余白は含みません。 |
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 が返されます。
PrintJob.start() および 1 つ目の PrintJob.addPage()PrintJob.addPage() と次の PrintJob.addPage()PrintJob.addPage() および PrintJob.send()Boolean — [印刷] ダイアログボックスでユーザーが [OK] をクリックした場合は true、ユーザーが [キャンセル] をクリックした場合、またはエラーが発生した場合は false を返します。
|
関連項目
PrintJobExample を使用して小さな文書を作成し、その文書をプリンタに送ります。ここでは以下の手順を実行します。
sheet1 および sheet2 という名前の Sprite 型の 2 つの変数を宣言します。init() を呼び出します。これは、新しい Sprite インスタンスを sheet1 と sheet2 に割り当てた後、別の引数を使用して createSheet() を呼び出します。createSheet() は、以下の処理を行います。
txt であり、Sprite と同じサイズです。wordWrap プロパティは true に設定され、テキストプロパティは createSheet() への引数として渡される String に設定されます。img であり、渡されたオブジェクトの座標およびサイズのプロパティを使用して、白い矩形を描画するときに使用されます。addChild() を使用して、白い四角形を Sprite オブジェクトの表示リストに追加します。addChild() を使用して、txt TextField を Sprite オブジェクトの表示リストに追加します。printOnePerPage() については後で説明します。printOnePerPage() は、以下の処理を行います。
pj と pagesToPrint という名前を付けます。OK をクリックするまで待機します。sheet1 と sheet2 にページの高さと幅を設定します。sheet1 および sheet2 を印刷スプーラに送ります (addPage() を使用)。draw() メソッドが呼び出されます。このメソッドによりステージに合わせて 2 つの Sprite プロパティのサイズが変更され、sheet2 が sheet1 の右側になるように再配置されます。メモ : コンストラクタは、必要に応じて、ページあたり 1 シート、ページあたり 2 シート、またはページの上半分に印刷の 3 つの印刷メソッドのいずれかを選択できるように設定されます。コードコメントを使用して印刷メソッドのうちちょうど 2 つが無効にされている場合に限り、この例は適切に動作します。この例は、printOnePerPage() が呼び出されるように設定されています。
package {
import flash.printing.PrintJob;
import flash.printing.PrintJobOrientation;
import flash.display.Stage;
import flash.display.Sprite;
import flash.text.TextField;
import flash.geom.Rectangle;
public class PrintJobExample extends Sprite {
private var sheet1:Sprite;
private var sheet2:Sprite;
public function PrintJobExample() {
init();
printOnePerPage();
// printTwoPerPage();
// printTopHalf();
draw();
}
private function init():void {
sheet1 = new Sprite();
createSheet(sheet1, "Once upon a time...", {x:10, y:50, width:80, height:130});
sheet2 = new Sprite();
createSheet(sheet2, "There was a great story to tell, and it ended quickly.\n\nThe end.", null);
}
private function createSheet(sheet:Sprite, str:String, imgValue:Object):void {
sheet.graphics.beginFill(0xEEEEEE);
sheet.graphics.lineStyle(1, 0x000000);
sheet.graphics.drawRect(0, 0, 100, 200);
sheet.graphics.endFill();
var txt:TextField = new TextField();
txt.height = 200;
txt.width = 100;
txt.wordWrap = true;
txt.text = str;
if(imgValue != null) {
var img:Sprite = new Sprite();
img.graphics.beginFill(0xFFFFFF);
img.graphics.drawRect(imgValue.x, imgValue.y, imgValue.width, imgValue.height);
img.graphics.endFill();
sheet.addChild(img);
}
sheet.addChild(txt);
}
private function printOnePerPage():void {
var pj:PrintJob = new PrintJob();
var pagesToPrint:uint = 0;
if(pj.start()) {
if(pj.orientation == PrintJobOrientation.LANDSCAPE) {
throw new Error("Without embedding fonts you must print one sheet per page with an orientation of portrait.");
}
sheet1.height = pj.pageHeight;
sheet1.width = pj.pageWidth;
sheet2.height = pj.pageHeight;
sheet2.width = pj.pageWidth;
try {
pj.addPage(sheet1);
pagesToPrint++;
}
catch(e:Error) {
// do nothing
}
try {
pj.addPage(sheet2);
pagesToPrint++;
}
catch(e:Error) {
// do nothing
}
if(pagesToPrint > 0) {
pj.send();
}
}
}
private function printTwoPerPage():void {
var pj:PrintJob = new PrintJob();
var pagesToPrint:uint = 0;
if(pj.start()) {
if(pj.orientation == PrintJobOrientation.PORTRAIT) {
throw new Error("Without embedding fonts you must print two sheets per page with an orientation of landscape.");
}
sheet1.height = pj.pageHeight;
sheet1.width = pj.pageWidth/2;
sheet2.height = pj.pageHeight;
sheet2.width = pj.pageWidth/2;
var sheets:Sprite = new Sprite();
sheets.addChild(sheet1);
sheets.addChild(sheet2);
sheets.getChildAt(1).x = sheets.getChildAt(0).width;
try {
pj.addPage(sheets);
pagesToPrint++;
}
catch(e:Error) {
// do nothing
}
if(pagesToPrint > 0) {
pj.send();
}
}
}
private function printTopHalf():void {
var pj:PrintJob = new PrintJob();
var pagesToPrint:uint = 0;
if(pj.start()) {
if(pj.orientation == PrintJobOrientation.PORTRAIT) {
throw new Error("Without embedding fonts you must print the top half with an orientation of landscape.");
}
sheet1.height = pj.pageHeight;
sheet1.width = pj.pageWidth/2;
sheet2.height = pj.pageHeight;
sheet2.width = pj.pageWidth/2;
var sheets:Sprite = new Sprite();
sheets.addChild(sheet1);
sheets.addChild(sheet2);
sheets.getChildAt(1).x = sheets.getChildAt(0).width;
try {
pj.addPage(sheets, new Rectangle(0, 0, sheets.width, sheets.height/2));
pagesToPrint++;
}
catch(e:Error) {
// do nothing
}
if(pagesToPrint > 0) {
pj.send();
}
}
}
private function draw():void {
var sheetWidth:Number = this.stage.stageWidth/2;
var sheetHeight:Number = this.stage.stageHeight;
addChild(sheet1);
sheet1.width = sheetWidth;
sheet1.height = sheetHeight;
addChild(sheet2);
sheet2.width = sheetWidth;
sheet2.height = sheetHeight;
sheet2.x = sheet1.width;
}
}
}
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/printing/PrintJob.html