Flash Player タスクとシステムプリント

OS のプリントインターフェイスに対するページの送出処理は Flash Player によって実行されるため、Flash Player が担当するタスクの範囲と、OS 自体のプリントインターフェイスが担当するタスクについて理解しておく必要があります。Flash Player では、プリントジョブの開始、プリンタのページ設定のうち一部の読み込み、OS に対するプリントジョブのコンテンツの送信、および、ユーザーまたはシステムによってプリントジョブがキャンセルされたかどうかの確認を実行します。その他の処理 (プリンタに特有のダイアログボックスの表示、スプールされたプリントジョブのキャンセル、プリンタのステータスに関するレポートなど) は、すべて OS で実行されます。Flash Player はプリントジョブの開始や書式指定に関する問題に応答しますが、その際に実行できる処理は、OS のプリント機能インターフェイスから取得した特定のプロパティや条件についてレポートを返すことだけに限られます。アプリケーション開発者は、レポートされたプロパティや条件に応じて何らかの処理を実行するコードを用意する必要があります。

サブトピック

例外および戻り値に対する処理
ページプロパティの操作
ベクター形式またはビットマップ形式のレンダリング
プリントジョブステートメントのタイミング

例外および戻り値に対する処理

ユーザーによってプリントジョブがキャンセルされた場合に対応するため、addPage() および send() を呼び出す前には、PrintJob.start() メソッドが true を返したかどうか確認してください。これらのメソッドに対する呼び出しを次のように if ステートメントで囲むと、続行する前にキャンセルされたかどうかを簡単にチェックできます。

if (myPrintJob.start())
{
    // ここに addPage() および send() ステートメントを記述
}

PrintJob.start()true の場合は、ユーザーが [印刷] を選択した (または Flash Player が [印刷] コマンドを開始した) ことを意味するため、addPage() および send() メソッドの呼び出しができます。

また、プリント処理の管理をしやすくするために、PrintJob.addPage() メソッドに対して Flash Player から例外が送出されるようになりました。これらのエラーをキャッチすることにより、ユーザーに情報と対処方法についての選択肢を示すことができます。PrintJob.addPage() メソッドが失敗した場合は、別の関数を呼び出すか、現在のプリントジョブを停止する方法もあります。例外をキャッチするには、addPage() の呼び出しを次のように try..catch ステートメントで囲みます。例に含まれている [params] の部分には、実際にプリントするコンテンツを指定するパラメータを指定します。

if (myPrintJob.start())
{
    try
    {
        myPrintJob.addPage([params]);
    }
    catch (error:Error)
    {
        // エラーを処理する
    }
    myPrintJob.send();
}

プリントジョブを開始した後は、PrintJob.addPage() でコンテンツを追加し、それによって例外 (ユーザーによるプリントジョブのキャンセルなど) が発生するかどうかを確認します。例外が発生した場合は、catch ステートメントに記述したロジックで、情報と対処方法の選択肢をユーザー (または Flash Player) に示すか、現在のプリントジョブを停止します。ページを正常に追加できた場合は、次に PrintJob.send() でページをプリンタに送信します。

Flash Player がプリントジョブをプリンタに送信する際に問題が発生した場合 (プリンタがオフラインになっていた場合など) も、同様にその例外をキャッチし、情報と対処方法の選択肢をユーザー (または Flash Player) に示すことができます (メッセージテキストと警告を Flash アニメーションで表示することなどが考えられます)。たとえば、次のように if..else ステートメント内でテキストフィールドに新しいテキストを設定するとします。

if (myPrintJob.start())
{
    try
    {
        myPrintJob.addPage([params]);
    }
    catch (error:Error)
    {
        // エラーを処理する 
    }
    myPrintJob.send();
}
else
{
    myAlert.text = "Print job canceled";
}

実際に動作するサンプルについては、例 : 拡大 / 縮小、トリミング、および応答を参照してください。

ページプロパティの操作

ユーザーが [印刷] ダイアログボックスで [OK] をクリックし、PrintJob.start()true を返すと、プリンタの設定によって定義されるプロパティにアクセスできるようになります。このプロパティには、用紙の幅と高さ (pageHeight および pageWidth)、用紙の向きが含まれます。これらはプリンタの設定であり、Flash Player の制御下にあるプロパティではありません。したがって設定を変更することはできませんが、これらの情報を使用することで、コンテンツを設定に適した形式に整形してプリンタに送信できます。詳細については、サイズ、拡大率、用紙の向きの設定を参照してください。

ベクター形式またはビットマップ形式のレンダリング

プリントジョブで各ページをベクターグラフィックとしてスプールするか、ビットマップイメージとしてスプールするかは、手動で設定できます。場合によっては、ベクター形式でプリントするとスプールファイルが小さくなり、画質もビットマップ形式でプリントするより向上することがあります。ただし、コンテンツにビットマップイメージが含まれている場合、アルファ透明度やカラー効果を再現するには、ページをビットマップイメージとしてプリントする必要があります。また、PostScript 非対応のプリンタでは、ベクターグラフィックは自動的にビットマップイメージに変換されます。ビットマップ形式でのプリントを指定するには、次のように、printAsBitmap パラメータに true を設定した PrintJobOptions オブジェクトを PrintJob.addPage() の第 3 パラメータとして渡します。

var options:PrintJobOptions = new PrintJobOptions();
options.printAsBitmap = true;
myPrintJob.addPage(mySprite, null, options);

第 3 パラメータの値を指定しない場合、そのプリントジョブではベクター形式でのプリントがデフォルトで実行されます。

メモ

 

ビットマップ形式でのプリントを指定する必要がある場合に、printArea (第 2 パラメータ) を指定しないようにするには、printArea として null を渡します。

プリントジョブステートメントのタイミング

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

ActionScript 3.0 には、15 秒間のスクリプトタイムアウトの制限があります。したがって、プリントジョブのシーケンスにおける主要なステートメント間の時間が 15 秒を超えてはなりません。つまり、15 秒間のスクリプトタイムアウトの制限は、次の間隔に適用されます。

これらの間隔のいずれかが 15 秒を超えていると、その次の PrintJob インスタンスの PrintJob.start() の呼び出しで false が返され、その次の PrintJob インスタンスの PrintJob.addPage() によって、Flash Player がランタイム例外をスローします。


 

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

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