FlashからPDFを生成(AlivePDF)


FlashからPDFを生成(AlivePDF)クライアントサイドでPDFを生成するAS3のオープンソースライブラリ、AlivePDF(http://www.alivepdf.org/)を試してみた。
現在の最新バージョンは、1.4.9。残念ながら日本語には対応していない。1.5で対応予定らしいがいつになるかわからない模様。日本語(マルチバイト)対応版を作っている人もいるが、まずは本家英語版で概要を知ることにした。

まずはGoogle Codeからダウンロードしてみる。
http://code.google.com/p/alivepdf/
MITライセンスなので安心して商用にも使える。

ダウンロードファイルの中には、AIR(Flex)とFlashCS3用のデモソースファイルや、ASDocも入っている。「クライアントサイドでPDFを生成する」とは言っても、Flashからは直接はファイルの書き出しはできないので、その部分はPHPなどのサーバーサイドプログラムを使ったり、AIRの機能を使ったりしているのだ。今回はPHP連携版で試した。

Get Adobe Flash player


↑のGenerateボタンを押すと生成。

◆図形や文字の乗せ方
本家alivepdf.org(http://www.alivepdf.org/)や他の作例サイトを見て、DisplayObjectを投げるとそのままキレイなPDFが生成されるのかと思ったら、そういうわけではなかった。
一応、そういう作り方もaddImage(DisplayObject)でできるけど、あくまでbitmapとして貼付けるためのものらしい。

こんな感じで、PDF用のオブジェクトを作って、その上に描画していく。
Flashの通常のDisplayObjectへの指定の仕方に似せようとしているようだが、恐らくPDFの仕様故の差異があってイマイチ使いこなしにくい、というのが率直なところ。

◆日本語を乗せてみる。
日本語は文字として乗らないのだが、日本語の入ったTextFieldをDisplayObjectとして指定すれば、一応出せるはだせる。もちろん、そのままではギザギザガタガタなので、あらかじめ拡大しておいてBitmap化すればいい。

ただ、これは多用するとファイルとして重くなって、どうも上手く書き出されないことがある。Flashから送信時の問題か、PHPのサーバー側の問題か、PDF生成後の問題かまでは突き詰めてないけど、画像を切るとあっという間に表示されるのに、画像を置くと上手く行かないことがある。

やっぱ、これは緊急避難の方法なのかな。

日本語対応マルチバイト版を試してみようかな。
http://www.harhid-labo.com/p1/index.php?Flex3%20PDF作成

▼ファイル一式
http://www.mztm.jp/wp/wp-content/uploads/2009/07/umhr_alivepdf.zip

追記▼日本語pdfを作ってみた
http://www.mztm.jp/wp/2009/07/06/flashから日本語pdfを生成(alivepdfmbpdf)/

▼ActionScript AS3(FP10)