Flex中にFelxPrintJobを利用せずExternalInterfaceでJavaScriptを呼んで直接印刷とする

Flex中に、PrintJobをラップする『FlexPrintJob』というクラスを利用すれば印刷することをできますが、このクラスを使わなくて、ブラウザ自身の印刷機能を利用して印刷するのは可能ですか。

それからの内容はExternalInterfaceでJavaScriptを呼んで直接ブラウザの印刷機能を利用してプリンタする処理を説明します。

ActionScript とコンテナアプリケーションとの間の通信を容易にするため、ExternalInterface クラスには 2 つの静的プロパティと 2 つの静的メソッドが用意されています。これらのプロパティとメソッドは、外部インターフェイス接続に関する情報(JavaScript 関数など)を取得し、コンテナ内のコードを ActionScript から実行し、コンテナから ActionScript 関数を呼び出せるようにするために使用されます。JavaScriptでブラウザの印刷機能を呼ぶのは簡単となれますね。

※ExternalInterface.call() メソッドでは、コンテナアプリケーション内のコードが実行されます。パラメータは最低 1 つ必要で、コンテナアプリケーション内で呼び出される関数の名前を含んだストリングを指定します。ExternalInterface.call() メソッドに渡された追加パラメータは、関数呼び出しのパラメータとしてコンテナに渡されます。

まず、下記のJavaScript関数を用意します。



下記のようなコードでJavaScript関数を呼ばれます。

import mx.controls.Alert;
import flash.external.ExternalInterface;

public static function PrintHtmlPage(pHtmlPage:String):void
{
if (ExternalInterface.available)
{
try
{
ExternalInterface.call(“printPage”,pHtmlPage);
}
catch (error:SecurityError) { Alert.show(“Security Error”); }
catch (error:Error) { Alert.show(“Error”);}
}
else { Alert.show(“ExternalInterface not avalible”);}
}

変数pHtmlPageはHTML標準を基づいた文字列です。


Helo World



補足説明:
FlexPrintJobを利用して印刷するサンプルソースコード:

var my_pj:FlexPrintJob = new FlexPrintJob();

if(my_pj.start()) {
my_pj.addObject(detail_box, “showAll”);
my_pj.send();
}

Leave a Reply

Your email address will not be published. Required fields are marked *