ActionScript 3.0で日本語対応のPDFが作成できる「purePDF」のサンプル

ActionScript 3.0 からクライアントサイドだけで PDF を作成できる AS3 ライブラリに AlivePDFpurePDF があります。最近は「purePDF」が日本語に対応しているとかで評判が良かったりするのですが、試してみようにも公式で提供されているサンプルが少しばかり難しめです。そこでシンプルなサンプルを用意してみました。

ソースコードは Adobe Flash Builder 4 のプロジェクトで用意していますが、Flash Professional や FlashDevelop でも利用することができます。以下、具体的な使い方を解説します。

※ライブラリとフォントは公式サイトから別途ダウンロードください

使い方

まずはライブラリのパスを通します。

  1. 公式サイトからライブラリの SWC ファイルをダウンロード。
  2. Flash Builder (またはその他のソフト) で SWC にライブラリパスを通します。

ActionScript は上でダウンロードしたソースコードの「JapaneseSample.as」を例に解説します。

まずは CMAP の読み込みと登録をします。CMAP のことは「CMapで文字コードからCIDへ変換」の解説記事がわかりやすいと思います。ポイントとしては、CMap クラスや BaseFont クラスからJIS系の定数を選択することです。

var map: ICMap = new CMap( new CMap.UniJIS_UCS2_H() );
CMapResourceFactory.getInstance().registerCMap( BaseFont.UniJIS_UCS2_H, map );

次にプロパティの読み込みと登録をします。使いたいフォントを BuiltinCJKFonts クラスから定数を使って指定します。次のコードでは日本語フォント「平成角ゴシック」がビルトインで搭載されているので、それを利用しています。

var prop: IProperties = new Properties();
prop.load( new BuiltinCJKFonts.HeiseiKakuGo_W5() );

CJKFontResourceFactory.getInstance().registerProperty(
    BuiltinCJKFonts.getFontName( BuiltinCJKFonts.HeiseiKakuGo_W5 ),
    prop);

次にフォント指定のためのインスタンスを作成します。Font クラスのコンストラクタの引数で文字のサイズやカラーを指定します。

var bf: BaseFont = BaseFont.createFont(
BuiltinCJKFonts.getFontName( BuiltinCJKFonts.HeiseiKakuGo_W5 ),
BaseFont.UniJIS_UCS2_H, BaseFont.NOT_EMBEDDED, true );

var font: Font = new Font( -1. -1, 32, -1, null, bf );

次は purePDF を利用するための初期化をします。PageSize クラスの定数を利用してPDFドキュメント(紙)のサイズを指定します。

var byteArray:ByteArray = new ByteArray();
var rectangle:ReadOnlyRectangle = PageSize.A4;
var writer:PdfWriter = PdfWriter.create(byteArray, rectangle);
var document:PdfDocument = writer.pdfDocument;

次は、PDF の内容を作成します。PdfDocument インスタンスを open() して内容を書き込み、close() して閉じます。close() した段階で byteArray に PDF のバイナリデータが作られます。


document.open();
<pre>document.add(new Paragraph("こんにちは。こんにちは purepdf。n日本語もできます。", font));
document.close();

最後は保存処理を行います。PDF の内容は byteArray インスタンスに格納されているので、ここは用途に応じて自由に作成しましょう。私の用意したサンプルでは、FileReferece クラスを利用してローカルに保存するようにしています。

var fr:FileReference = new FileReference();
fr.save(byteArray, "mydocument.pdf");

以上となります。

日本語化に関する参考記事

日本語化の方法については次の記事がとても参考になります。あわせてご確認ください。

P.S. FlashサイトをキャプチャしてPDFに変換する Progression 拡張機能「CaptureSheetMaker」 は AlivePDF を使っているのですが、purePDF に切り替えようかライブラリのライセンスの関係で迷いどころ。

投稿者 : 池田 泰延

BookMark

ブックマークはこちらからどうぞ。

このエントリーをはてなブックマークに追加

Comment/Trackback 5件