【連載】
前回は、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の書式については、こちらの記事を見ていただきたい。)
<mx:HTML width="640" height="480" location="http://labs.adobe.com/showcase/special/airderby/airderby_officialrules.pdf"/>
// 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を用いたイベントハンドリングも行うことができる。
htmlControl.addEventListener(Event.DOM_INITIALIZE, function():void {
trace("PDF読み込み開始");
});
htmlControl.addEventListener(Event.COMPLETE, function():void {
trace("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機能が利用できない場合には適切なエラー処理を施す必要がある。
なお、現在のβ版においては、以下のような制限がある。
今回は、AIRが持つPDF表示機能を紹介した。サーバサイドでPDFを動的に生成し、ダウンロードして表示したり、アプリケーションのマニュアルを必要に応じてダウンロードして表示する、などの利用法が考えられるだろう。
次回は、AIRにおけるドラッグ&ドロップについて解説したい。
【コラム】漢のzsh 第20回 コマンド補完設定 - cal/ncalコマンド編
【連載】今からはじめるAIRプログラミング 第9回 HTMLレンダリング用API(1) - Webページの表示とイベントの捕捉
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
TVアニメ『ゆるゆり』、ライブBD/DVD発売を前にステージの模様を写真で紹介 [00:00 2/11] ホビー |
|
視聴率にだまされないTVライフ指南 - 今アツイのは"NOリスペクト、NO視聴率"なこの2番組! [00:00 2/11] エンタメ |
|
[逆転裁判]三池崇史監督に聞く(1) 法廷ゲームを映画化「映画自体がゲームの一部になれるといい」 [23:29 2/10] エンタメ |
|
熊田曜子が最新DVDで美乳引き立つゴールドビキニ姿を披露『WOMAN~本性~』 [22:30 2/10] エンタメ |
|
「グラビア甲子園」特別賞の新人・藤村椿の"フレッシュ・ヒップ"が弾ける! [22:30 2/10] エンタメ |