2010年2月22日月曜日

Apache FOPで"ようこそ!":TTFを使う

前回、Apache FOPで"Hello world!"と書かれたpdfが出力できることを確認しました。
そこで今回は、同様に"ようこそ!"と表示してみます。

Apache FOPは、デフォルトのままでは日本語フォントに対応していません。
そこで、設定用のXMLファイルを用意します。

今回は一番簡単な、TTFファイルを使用するパターンを解説します。

jpfont.xml
<?xml version="1.0" ?>
<fop version="1.0">
  <renderers>
    <renderer mime="application/pdf">
      <fonts>
        <font embed-url="C:\windows\fonts\simhei.ttf">
          <font-triplet name="JpFont" weight="normal" style="normal" />
        </font>
      </fonts>
    </renderer>
  </renderers>
</fop>


※ SimHeiは実際には中国語フォントですが、Windows標準でTTF形式の日本語対応フォントはSimHeiしか用意されていないようです。もし他にTTF形式の日本語フォントがあれば、そちらを使用しても構いません。

font-tripletタグのname属性は、任意の名前に設定が可能です。

次に、文書の本体であるXSLファイルを変更します。

welcome.xsl
<?xml version="1.0" encoding="Shift_JIS"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

 <fo:layout-master-set>
  <fo:simple-page-master  master-name="A4"
                          page-width="210mm" page-height="297mm">
   <fo:region-body region-name="xsl-region-body"  margin="2cm"/>
  </fo:simple-page-master>
 </fo:layout-master-set>

 <fo:page-sequence  master-reference="A4">
  <fo:flow flow-name="xsl-region-body">
   <fo:block font-family="JpFont">ようこそ!</fo:block>
  </fo:flow>
 </fo:page-sequence>

</fo:root>

前回の内容から変更した箇所を太字にしています。
最初の行にあるencording属性は、実際のXSLファイルのエンコーディングに合わせて変更してください。

どちらのファイルもfop.batのフォルダの直下に保存してあるものとします。
今回は追加設定ファイル(XML)を読み込む必要があるので、-cオプションを使います。

fop welcome.xsl welcome.pdf -c jpfont.xml

で実行してください。

"ようこそ!"

確認できましたか?

0 件のコメント:

コメントを投稿