Fenriswolf 程式筆記

奮利斯狼的地盤,小綿羊勿入

用 Ant 建立 Docbook 文件 – 支援 pdf 中文字型

不管是用 Docbook Framework 還是 iReport 建立的 pdf 檔都沒有支援中文字型
都需要自己下載相對應的定型檔並加進設立檔內

1. 把字型檔放到 Docbook Framework Home 下
我用的是微軟正黑體 msjh,可自行上網找相關的字型檔

2. 用 TTFReader 從字型檔建立相對應的 matrics xml
產生出來的 xml 檔也是放在 Docbook Framework Home 下

java -cp DOCBOOKFRAMEWORK_HOME/lib/* org.apache.fop.fonts.apps.TTFReader msjh.ttf msjh.xml

3. 建立 userconfig.xml
可用我的範例或從 fop.jar 裡找到,在 conf/userconfig.xml 目錄下
這裡描述了會用到的標準體,粗體及斜體字型。如果缺了一個,建出來的 pdf 文件中文字會變亂碼

<configuration>
    <fonts>
        <font metrics-file="msjh.xml" kerning="yes"
            embed-file="msjh.ttf">
            <font-triplet name="msjh" style="normal" weight="normal"/>
        </font>
        <font metrics-file="msjh.xml" kerning="yes"
            embed-file="msjh.ttf">
            <font-triplet name="msjh" style="italic" weight="normal"/>
        </font>
        <font metrics-file="msjh.xml" kerning="yes"
            embed-file="msjh.ttf">
            <font-triplet name="msjh" style="normal" weight="bold"/>
        </font>
    </fonts>
</configuration>

4. 修改 DocbookFrameworkHome/src/styles/pdf.xsl
加入以下幾行

<xsl:param name="body.font.family">msjh</xsl:param>
<xsl:param name="body.font.size">12</xsl:param>
<xsl:param name="title.font.family">msjh</xsl:param>

<xsl:param name="page.margin.inner">3.8cm</xsl:param>
<xsl:param name="page.margin.outer">2.54cm</xsl:param>

5. 修改 Docbook Framework Home 下的 build-docbook.xml
主要是加入 -c 的參數並指定修改過的 userconfig.xml,Docbook 才能找到我們所使用的字型檔

<java classname="org.apache.fop.apps.Fop" fork="true" maxmemory="256m"
      dir="${basedir}" classpathref="dbf.classpath">
    <arg line="-c ${basedir}/userconfig.xml"/>
    <arg value="${pdf.target.file}.xml"/>
    <arg value="${target.dir}/${docbook.dir}/pdf/${docbook.file}.pdf"/>
</java>

 
 
執行環境
JDK 1.6.0_23
Velocity Docbook Framework 1.0
Xerces-2.11

參考資料
XMLmind
Velocity Docbook Framework
Xerces
DocBook: Write Once, Read Anywhere Documentation

廣告

2012/03/21 - Posted by | Java Tool | ,

仍無迴響。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

w

連結到 %s

%d 位部落客按了讚: