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

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

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

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

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

  1. <script language="JavaScript">
  2.     function printPage(htmlPage)
  3.     {
  4.         var w = window.open("about:blank");
  5.         w.document.write(htmlPage);
  6.         w.print();
  7.         w.close();
  8.     }
  9. </script>

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

  1. import mx.controls.Alert;
  2. import flash.external.ExternalInterface;  
  3.  
  4. public static function PrintHtmlPage(pHtmlPage:String):void
  5. {
  6.     if (ExternalInterface.available)
  7.     {
  8.         try 
  9.         {
  10.               ExternalInterface.call("printPage",pHtmlPage);
  11.         }
  12.         catch (error:SecurityError) { Alert.show("Security Error"); }
  13.         catch (error:Error) { Alert.show("Error");}
  14.     }
  15.     else { Alert.show("ExternalInterface not avalible");}
  16. }

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

  1. <html><h1>Helo World</h1></html>

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

  1. var my_pj:FlexPrintJob = new FlexPrintJob();
  2.  
  3. if(my_pj.start()) {
  4. my_pj.addObject(detail_box, "showAll");
  5. my_pj.send();
  6. }
メインコンテンツEND ■
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Posted on Saturday, 1st November 2008 by admin

Tags: , , ,
Posted in Flex | Comments (0) | 3,020 views

Leave a Reply