| パッケージ | flash.printing |
| public class PrintJob | |
| 継承 | PrintJob EventDispatcher Object |
印刷ジョブを作成し始めるには、コンストラクタ 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 | ||
![]() | dispatchEvent(event:Event):Boolean
イベントをイベントフローに送出します。
| EventDispatcher | |
![]() | hasEventListener(type:String):Boolean
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
| EventDispatcher | |
![]() | hasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
| Object | |
![]() | isPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | |
![]() | propertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
| Object | |
![]() | removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
| EventDispatcher | |
send():void
PrintJob.start() と PrintJob.addPage() が成功した後、スプールしたページをプリンタに送信します。 | PrintJob | ||
![]() | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | |
| start():Boolean
オペレーティングシステムの [印刷] ダイアログボックスを表示し、スプールを開始し、PrintJob の読み取り専用プロパティ値を設定します。
| PrintJob | ||
![]() | toString():String
指定されたオブジェクトのストリング表現を返します。
| Object | |
![]() | valueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
| Object | |
![]() | willTrigger(type:String):Boolean
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
| 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 ピクセル幅の伸縮されていないスプライトは、用紙上には 1 インチ幅でプリントされます。画面の解像度とは関係なく、1 ポイントが 1 ピクセルに対応します。 インチおよびセンチメートルと、ポイントおよび twip (1/20 ポイント) との間には、次の等式が成り立ちます。
|
|
options:PrintJobOptions (default = null) — ベクターとビットマップのどちらで印刷するかを指定する、オプションのパラメータ。デフォルト値は null で、これはベクター形式を示します。sprite をビットマップとして印刷するには、PrintJobOptions オブジェクトの printAsBitmap プロパティを true に設定します。printAsBitmap を true に設定するかどうかを決めるときには、次の項目に留意してください。
|
|
frameNum:int (default = 0) — 印刷するフレームを指定できるオプションの数値。frameNum を渡しても、そのフレームの ActionScript は呼び出されません。このパラメータを省略すると、sprite 内の現在のフレームが印刷されます。Flash オーサリング環境で使用できるオプションの数値。Flex アプリケーションを記述する場合には、このパラメータを省略するか、値 0 を指定します。メモ : |
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) {
// エラーを処理します
}
my_pj.send();
}
関連項目
| start | () | メソッド |
public function start():Boolean
オペレーティングシステムの [印刷] ダイアログボックスを表示し、スプールを開始し、PrintJob の読み取り専用プロパティ値を設定します。ユーザーは [印刷] ダイアログボックスで印刷設定を変更できます。PrintJob.start() メソッドが正常に返された場合、つまりユーザーが [印刷] ダイアログボックスで [OK] をクリックした場合、次の読み取り専用プロパティに値が渡され、ユーザーの現在の印刷設定を表します。
| プロパティ | タイプ | 単位 | メモ |
|---|---|---|---|
PrintJob.paperHeight | Number | ポイント | 用紙の高さ |
PrintJob.paperWidth | Number | ポイント | 用紙全体の幅 |
PrintJob.pageHeight | Number | ポイント | 用紙上の実際の印刷可能領域の高さ。ユーザーが設定した余白は含みません。 |
PrintJob.pageWidth | Number | ポイント | 用紙上の実際の印刷可能領域の幅。ユーザーが設定した余白は含みません。 |
PrintJob.orientation | String | "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() および send() ステートメントを記述
}
指定された印刷ジョブインスタンスの場合、次のいずれかの間隔が 15 秒以上である場合、次回の PrintJob.start() を呼び出すと false が返されます。
PrintJob.start() および 1 つ目の PrintJob.addPage()PrintJob.addPage() および 2 つ目の PrintJob.addPage()PrintJob.addPage() および PrintJob.send()Boolean —
[印刷] ダイアログボックスでユーザーが [OK] をクリックした場合は true、ユーザーが [キャンセル] をクリックした場合、またはエラーが発生した場合は false を返します。
|
関連項目
PrintJobExample クラスを使用して、小さなドキュメントを作成し、
そのドキュメントをプリンタに送信しますここでは以下の手順を実行します。
sheet1 と sheet2 を宣言します。init() を呼び出します。これにより、新しい Sprite インスタンスが sheet1 および
sheet2 に割り当てられ、次に別の引数で createSheet() が呼び出されます。createSheet() により次のことを行います。txt という名前の新しい TextField オブジェクトが作成されます。このオブジェクトのサイズは
Sprite と同じで、wordWrap プロパティは true、テキストプロパティは
createSheet()img で、白い四角形を描画するために使用されます。この四角形の座標と大きさのプロパティは
渡された Object の値が使用されます。次を呼び出して、白い四角形を Sprite オブジェクトの表示リストに追加します。
addChild().txt TextField を Sprite オブジェクトの表示リストに追加します。
addChild().printOnePerPage() について次に説明します。printOnePerPage() により次のことを行います。pj という新しい PrintJob オブジェクトと、単位として pagesToPrint を宣言します。OKsheet1 および sheet2addPage()sheet1 および sheet2 を印刷スプーラに送信します。
draw() メソッドが呼び出されます。このメソッドは、ステージに合うように 2 つの Sprite プロパティの大きさを変更し、
sheet1sheet2 の位置を変更します。
メモ : コンストラクタが設定され、3 つの印刷メソッドのいずれか ( 1 ページあたり 1 シート、
1 ページあたり 2 シート、ページの上半分のみ印刷) を環境設定に応じて選択できるようになります。
印刷メソッドのうちちょうど 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;
}
}
}