FOPを入れよう
id:mzp:20070223:xmlの続き。最後に残ったXSL-FOフォーマッタ、FOPを入れよう。
XSL-FOは印刷用マークアップ言語。XMLからPDFやPostScriptに変換するときの中間言語として用いられる。
インストール
Apache(tm) FOP - a print formatter driven by XSL formatting objects (XSL-FO) and an output independent formatter.から最新版のソースコードをダウンロード。Java1.5のバイナリは用意されていなかったので、自分でビルドすることにした。
$ tar xvzf fop-0.93-src.tar.gz $ cd fop-0.93 $ ls KEYS build.xml forrest.properties status.xml LICENSE conf/ hyph/ test/ NOTICE examples/ known-issues.xml README fop lib/ build.properties fop.bat src/ $ ant
makeじゃなくて、antなのがポイント。antが入っていないなら、DarwinPortとかでいれる。
あとは、適当なディレクトリに移動してパスを通して終わり。
$ cd .. $ sudo mv fop-0.93 /opt/manual/fop
使い方
ヘルプによると
Fop -xml foo.xml -xsl foo.xsl -pdf foo.pdf
という使い方ができるらしいので、XMLとXSLTを用意してやる。
まずは、XML。前回のやつと同じ。
<?xml version="1.0" encoding="utf-8" ?> <doc> <para>Hello World!!</para> <para>Second Line</para> </doc>
そして、XSL-FO用のXSLT。
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="xml" encoding="utf-8" /> <xsl:template match="/"> <fo:root> <fo:layout-master-set> <fo:simple-page-master master-name="the-only-page-type" page-height="4in" page-width="4in" margin-top="0.5in" margin-bottom="0.5in" margin-left="0.5in" margin-right="0.5in"> <fo:region-body /> </fo:simple-page-master> </fo:layout-master-set> <xsl:apply-templates /> </fo:root> </xsl:template> <xsl:template match="doc"> <fo:page-sequence master-reference="the-only-page-type"> <fo:flow flow-name="xsl-region-body"> <fo:block font-family="helvatica, sans-serif" font-size="24pt" text-align="center" padding="0.25in"> <xsl:apply-templates /> </fo:block> </fo:flow> </fo:page-sequence> </xsl:template> <xsl:template match="para"> <fo:block padding="0.25in" border="solid 1pt black"> <xsl:apply-templates /> </fo:block> </xsl:template> </xsl:stylesheet>
そして、変換してやる。
$ fop -xml doc.xml -xsl fo.xsl -pdf foo.pdf