FOP で Hello, World! その2、絶対位置に出力したい
FOPで Hello, World!の続きです。
基本的に FO は流し込み組版なので flow 要素に block 要素を入れていき、 あとは成り行きで組版されるわけですが、 チラシのような印刷物をつくる場合に 固定レイアウトしたい場合はこれは都合が悪いです。
その場合どうすればいいか。
hello2.fo
<?xml version="1.0" encoding="UTF-8"?><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master margin="2cm" page-width="21.0cm" page-height="29.7cm" master-name="A4-portrait">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4-portrait">
<fo:flow flow-name="xsl-region-body">
<fo:block-container absolute-position='absolute' left='50mm' top='80mm' width='100mm' height='60mm' >
<fo:block>Hello, World!</fo:block>
</fo:block-container>
</fo:flow>
</fo:page-sequence>
</fo:root>
ポイントは
<fo:block-container absolute-position='absolute' left='50mm' top='80mm' width='100mm' height='60mm' >
<fo:block>Hello, World!</fo:block>
</fo:block-container>
で、 block-container という要素に対して、絶対位置指定をすればよいようです。
hello2.fo → hello2.pdf
$ fop -fo hello2.fo -pdf hello2.pdf