AIRが持つPDF表示機能
前回は、AIRが持つHTMLレンダリングエンジンについて解説した。今回はそれに関連したトピックとして、AIRが持つPDFとの連携機能について説明を行いたい。
PDFとの連携は、AIRのβ版から導入された機能だ。利用するためには、ローカルマシン上にAdobe Reader 8.1以上がインストールされている必要がある。この機能を使うと、AIRアプリケーション内でPDFファイルを表示し、画面上に配置することができる。以下は、PDFファイルを横二つに並べて表示してみたものだ。
表示する方法は簡単で、前回説明したHTMLコンポーネント(mx.controls.HTML
)やflash.html.HTMLControl
で、PDFファイルのURLを読み込むだけだ。(「http://」で始まるURLだけではなく、さまざまなURLが利用可能だ。指定できるURLの書式については、こちらの記事を見ていただきたい。)
HTMLコンポーネントで読み込む場合。location属性にPDFのURLを指定
<mx:HTML width="640" height="480" location="http://labs.adobe.com/showcase/special/airderby/airderby_officialrules.pdf"/>
HTMLControlで読み込む場合。loadメソッドの引数が、PDFのURLを指定したURLRequestとなる
// HTMLControlを生成し、幅と高さを設定
var htmlControl:HTMLControl = new HTMLControl();
htmlControl.height = 480;
htmlControl.width = 640;
// PDFファイルをロード
htmlControl.load(new URLRequest("http://labs.adobe.com/showcase/special/airderby/airderby_officialrules.pdf"));
// UIComponentでラップし、コンポーネントとして利用可能にする
var comp:UIComponent = new UIComponent();
comp.addChild(hc);
// 他のコンポーネントに追加
disp.addChild(pdf);
HTMLControl
クラスの、addEventListener
を用いたイベントハンドリングも行うことができる。
addEventListenerでイベントハンドリング
htmlControl.addEventListener(Event.DOM_INITIALIZE, function():void {
trace("PDF読み込み開始");
});
htmlControl.addEventListener(Event.COMPLETE, function():void {
trace("PDFの読み込み完了");
});
PDF機能の利用可否を調べる
前述したように、PDF機能を用いるためにはAdobe Reader 8.1以上がインストールされている必要がある。適切なバージョンのReaderがインストールされ、利用可能でない場合は、PDFの読み込みを行った時点でエラーが発生するので、プログラム内で何らかの対処が必要となる。
その際に用いるのはHTMLControl.pdfCapability
プロパティだ。同プロパティの値を、flash.html.HTMLPDFCapability
クラスの定数と比較することで、AIRアプリケーションを実行中のマシンがReaderに関してどういった状態かを調べることができる。
エラー処理を行うための典型的なコードは以下のようになる。
エラー処理を行うためのコード
switch(HTMLControl.pdfCapability) {
case HTMLPDFCapability.STATUS_OK:
// PDF機能が利用可能
break;
case HTMLPDFCapability.ERROR_INSTALLED_READER_NOT_FOUND:
// Readerがインストールされていない
break;
case HTMLPDFCapability.ERROR_INSTALLED_READER_TOO_OLD:
// Readerのバージョンが8.1よりも古い
break;
case HTMLPDFCapability.ERROR_PREFERRED_READER_TOO_OLD:
// 8.1はインストール済みだが、それよりも古いReaderを使うよう設定されている
break;
case HTMLPDFCapability.ERROR_CANNOT_LOAD_READER:
// 8.1はインストール済みだが、なんらかの理由で利用できない
break;
}
プログラム内でこうした条件分岐を行い、PDF機能が利用できない場合には適切なエラー処理を施す必要がある。
β版における制限
なお、現在のβ版においては、以下のような制限がある。
- PDFを表示中のHTMLコンポーネントは、常に表示の重なり順が一番上に来てしまう。
- フィルタ、透明度、回転、スケールなどを変更できない。変更すると、それらの値がリセットされるまでPDF自体が表示されなくなる。
- PDF内のリンクが上手く動作しない。
活用法はさまざま
今回は、AIRが持つPDF表示機能を紹介した。サーバサイドでPDFを動的に生成し、ダウンロードして表示したり、アプリケーションのマニュアルを必要に応じてダウンロードして表示する、などの利用法が考えられるだろう。
次回は、AIRにおけるドラッグ&ドロップについて解説したい。