AIR/Flex: 2012年4月アーカイブ

20120411_flash.jpg
Flash Builder を使ってActionScript 3 でアプリを開発する予定がある。
その中で、表示した内容を印刷する処理があるのだ。

実は今まで AS3 のアプリで印刷処理をしたことは無かった。
んが、PrintJob クラスを使えば「印刷するだけ」なら簡単に実装できそうである。

例えば、表示している画像を印刷する・・・という処理なら、下記のようなコードになる。

<!--?xml version="1.0" encoding="utf-8"?-->
<s:application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="618" height="417" minwidth="955" minheight="600" backgroundcolor="#DBCAA7">

    <fx:script>
        <!--[CDATA[

            import flash.printing.PrintJob;

            private function BasicPrintExample():void {

                var myPrintJob:PrintJob    = new PrintJob();

                if (myPrintJob.start()) {

                    try {
                        myPrintJob.addPage(img1); 
                    }
                    catch(e:Error) {
                    }

                    myPrintJob.send();

                }

            } 

        ]]-->
    </fx:script>

    <s:image id="img1" x="121" y="52" width="384" height="293" source="img/20120408_touring.JPG">
    <s:button id="btn1" x="274" y="23" label="印刷" click="BasicPrintExample()">

</s:application>

簡単やねえ(^^;

ただ、ここで困った問題が発生。
実は、お客さんから「印刷部数を記録したい」という要望があったのである。つまり、「何枚印刷したか知りたい」ということである。

これも、デスクトップアプリケーション(AIR)で作れば簡単だ。

PrintJob クラスには、copies プロパティが存在するので、例えば上の例であれば、myPrintJob.send(); の前で、myPrintJob.copies の値を調べれば、印刷ダイヤログの「部数」のところで指定した値を知ることが出来る。

・・・が、今回は AIR ではなく Web アプリケーション(Flash)で・・・ということになっている。これが厳しい。

Flash の場合、AIR と違い(同じ AS3 で書かれていても)ローカル PC の情報は一切取れない。セキュリティ面からの実装だと思うが、そのため、copies プロパティ等も Flash として作成する Flex プロジェクトでは参照できない。定義されていないプロパティだと怒られてしまうのである。

つーことで、どうしても「印刷部数」をアプリケーション内で取りたければ AIR アプリで・・・ということになるな。

このアーカイブについて

このページには、2012年4月以降に書かれたブログ記事のうちAIR/Flexカテゴリに属しているものが含まれています。

前のアーカイブはAIR/Flex: 2012年3月です。

次のアーカイブはAIR/Flex: 2012年8月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら