XMLからPDFを生成する

D:20011210 免責事項

自分的には近頃気になるキーワードは、XMLとPDFなんですね。で、 この二つのキーワードでWEBを検索してみると、返ってくる答えのなかで は「FOP」というのが面白そうだなと思ったわけです。FOPはXSLを使って XML文書をフォーマットするJAVA2のアプリケーションです。メインの出力 形式はPDFということになっています。

FOPを動かすにはJAVA2の環境 が必須なので、あらかじめインストールと設定をしておくことが必要です。

FOPの最新版を手に入れる

Apache XML ProjectのWEBサイトからFOPの最新版[1]をGET します。はじめてFOPを使う場合はsrcが必要だと思います。入手したファ イルを解いたあとに、インストール先のディレクトリへ移動して build.shを走らせ、続いて runtests.shでFOPの動作を確認します[2]。 参考文書には、fop.jarは配布ファイルに含まれているから build.shは使わなくてもよいと記述されています が、念のため使いました。runtests.shによって配布 ファイル内のfoファイルからPDFファイルが生成されます[3]。生成されたPDF ファイルがacroreadでうまく表示できれば、基本的な動作確認は終了で す。
(伸長、展開、コンパイル、テスト)
~$ gzip -d Fop-0.20.1-src.tar.gz
~$ tar xvf Fop-0.20.1-src.tar
~$ cd Fop-0.20.1
~$ sh build.sh
...
BUILD SUCCESSFUL
...
~$ cd docs/examples/
~$ sh runtests.sh
...
BUILD SUCCESSFUL
...

日本語TrueTypeフォントを使う

FOPではType1とTrueTypeフォントを使うことができるが、ユーザ がフォントを追加して使えるようにするには、フォント・メトリックを 記述したxml形式ファイルが必要になる。フォント・メトリック・ファイルは、 FOPに付属しているツールで簡単に生成することができる。使うフォントは (WindozBoxでは使っていない)Canvas6付属のIwataフォントにする。

まず最初にフォント・メトリック・ファイルを生成して、つぎに フォントをFOPへ登録する。 登録はuserconfig.xmlを編集して生成したフォント・メトリック・ファ イルのパス、TrueTypeフォントファイルのパス、フォントの別名などを 指定すればよい。userconfig.xmlのなかに記述例があるので参考にする。 これで、さきほど登録したフォントをfoファイルのなかの font-familyで使うことができる。

(フォント・メトリック・ファイルを生成)
*このクラスパスは冗長かもしれない。
~/Fop-0.20.1$ java -cp build/fop.jar:lib/batik.jar:lib/xalan-2.0.0.jar:lib/xerce
s-1.2.3.jar:lib/jimi-1.0.jar org.apache.fop.fonts.apps.TTFReader /usr/X11R6/lib/
X11/fonts/TrueType/iwaminm.ttf iwaminm.xml
TTF Reader v1.1.1

Reading /usr/X11R6/lib/X11/fonts/TrueType/iwaminm.ttf...

Number of glyphs in font: 12482
Postscript format 3
Creating xml font file...

Creating CID encoded metrics
Writing xml font file iwaminm.xml...

This font contains no embedding license restrictions

つぎに、登録したTrueTypeフォントを埋め込んでPDFファイルを 作ってみよう。そのためにはFOPを起動するときに"-c"オプションを使っ て設定ファイル(userconfig.xml)を指定するだけでよい。

~/Fop-0.20.1$ Fop -c conf/userconfig.xml simple-ja.fo simple-ja.pdf

生 成されたPDFファイル(109kb)をWindoz環境では、Acrobat(v5.0.1)と Acrobat Reader(v5.0.5)、さらにLinux環境ではAcrobat Reader(v4.0) で表示できることを確認した。そして、文書の概要(General Info)のPDF変換 (Producer)は「FOP 0.20.1」、作成(Creator)は「不明(Not Available)」 となっていた。また、フォント情報(Font Info)を見ると、つぎの図の とおりTrueTypeフォントが埋め込まれているのがわかる。

Figure 4. Acrobat Reader(v4.0)のフォント情報

Notes

[1]

今回はFop-0.20.1-src.tar.gzでした。

[2]

参考文書:~/Fop-0.20.1/docs/html-docs/compiling.html

[3]

PDFファイルの生成先: Fop-0.20.1/docs/examples/tests/