【連載】

今からはじめるAIRプログラミング

10 HTMLレンダリング用API(2) - PDFの表示

    白石俊平  [2007/07/13]

    AIRが持つPDF表示機能

    前回は、AIRが持つHTMLレンダリングエンジンについて解説した。今回はそれに関連したトピックとして、AIRが持つPDFとの連携機能について説明を行いたい。

    PDFとの連携は、AIRのβ版から導入された機能だ。利用するためには、ローカルマシン上にAdobe Reader 8.1以上がインストールされている必要がある。この機能を使うと、AIRアプリケーション内でPDFファイルを表示し、画面上に配置することができる。以下は、PDFファイルを横二つに並べて表示してみたものだ。

    AIRアプリケーション内で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におけるドラッグ&ドロップについて解説したい。

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン