Apache FOP で日本語を含む PDF を作成する


Apache FOP (以下, FOP) はオープンソースの XSL-FO の処理系です。 XSL-FO で記述された文書を PDF やその他の形式で出力することができます。 FOP は Java で実装されています。

FOP を使うと簡単に PDF が作成できますが,日本語を用いるためにはワンステップ必要です。 FOP を用いることで用意にフォントの埋め込みが実現できます。以下の内容の設定ファイルを作成します。

<?xml version="1.0" encoding="UTF-8" ?>

<fop version="1.0">
	<renderers>
		<renderer mime="application/pdf">
			<filterlist>
				<value>flate</value>
			</filterlist>
			<fonts>
				<auto-detect />
			</fonts>
		</renderer>
	</renderers>
</fop>

ここでは PDF の出力しか想定していないので renderer は 1 つのみです。重要なのは fonts の部分で, auto-detect を指定することで OS にインストールされたフォントが利用できます。ちなみに OS にインストールされていないフォントを使用したい場合はフォントメトリクスの XML ファイルを作成する必要があります。

日本語を含む XSL-FO 文書を作成して適当なところで font-family 属性で適当な日本語対応フォントを指定してやれば良いです。後は FOP のコマンドラインオプションで,作成した設定ファイルを指定してやることで,日本語を含む PDF を作成することができます。

fop -c test.xconf -fo test.fo -pdf test.pdf

test.xconf は先ほど作成した設定ファイルです。先ほど述べたように指定のフォントは OS にインストールされている必要があります。