讓ThinkingRock輸出的PDF可以顯示中文

讓ThinkingRock輸出的PDF可以顯示中文


   
之前提到使用ThinkingRock來實現GTD的概念,雖說ThinkingRock實作了GTD的全部功能,但是對於中文的使用者還是有一點不太方
便,其中比較大的問題便是輸出PDF的部份。輸出的PDF檔案並無法正確的顯示出中文來,文中的中文字全變成了方框,這是因為內附PDF使用的字型沒有支
援中文字,可以透過增加字型來讓PDF檔案可以出現中文。在官網的FAQ中有提到如何為PDF報表新增字型,可以參考這裡。由官網的說明可以知道ThinkingRock是使用Apache FOP來產生PDF報表。
    如果對英文過敏的朋友,或是想知道一步步做法而已的朋友,可以參考“为ThinkingRock的REPORT添加中文字体”一文。按此文一步步操作,即可以加入字型到ThinkingRock中以供PDF輸出使用。









(1)由于ThinkingRock只内置了Courier、Helvetica和Times Roman三种字体,我们需要添加一种汉字字体,获得字体,我用的是WinXP的仿宋字体simfang.ttf。


(2)
生成TRUE TYPE(.ttf)的Font Metrics
Files,在命令行状态下,进入ThinkingRock/lib目录下,使用命令“java -cp
{path}\fop.jar;{path}\avalon-framework.jar;{path}\commons-logging.jar;{path}\commons-io.jar
org.apache.fop.fonts.apps.TTFReader simfang.ttf
simfang.xml”来生成simfang.xml,这里{path}是fop.jar,avalon-framework.jar,commons
-logging.jar,commons-io.jar所在的路径,一般在ThinkingRock的lib子目录下,输入时还要注意这几个JAR文件
名字的一致性


(3)复制simfang.ttf以及simfang.xml到ThinkingRock所在目录下的resource/fop子目录里;


(4)编辑resource/fop/目录下的fop.xconf,在<fonts></fonts>段内增加几行,如下:


<font metrics-url="simfang.xml" kerning="yes" embed-url="simfang.ttf">


<font-triplet name="Simfang" style="normal" weight="normal"/>


</font>


<font metrics-url="simfang.xml" kerning="yes" embed-url="simfang.ttf">


<font-triplet name="Simfang" style="normal" weight="bold"/>


</font>


<font metrics-url="simfang.xml" kerning="yes" embed-url="simfang.ttf">


<font-triplet name="Simfang" style="italic" weight="normal"/>


</font>


至此,配置修改好了,打开ThinkingRock程序,在输出报告时字体选择“simfang”,PDF文件即显示正确的汉字。


更详细的说明参见How to add fonts for PDF reports






試著以simsun.ttc去操作,是可以讓PDF文件正常顯示出中文而不再只是方框而已。但是同樣的作法用在ukai.ttf(文鼎PL中楷Uni)
上,卻仍無法讓中文順利出現,原本呈現方框的中文套用上ukai.ttf後反而都變成透明,什麼都看不到了,但是使用PDF文件中的複製功能,可以順利的
將文字複製出來。可以知道文字是有順利加入到文件中,但是不知什麼原因而無法正確的顯示出來,如有遇到相同問題的朋友,可以先用simsun.ttc來試
試看在做法上是否有問題,但是似乎simsun.ttc這個字型版權並不是開放的,所以在使用上請小心。
    最後要提醒的是,fop.xconf檔案中的編輯,請小心位置,不要加錯地方,否則會徒勞無功的。加入的內容需注意加入的字型檔案名稱做適當的修改。以simsun.ttc為例,則內容應該如下
        <!-- simsun Font -->
        <font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttc">

        <font-triplet name="simsun" style="normal" weight="normal"/>
        </font>
        <font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttc">
        <font-triplet name="simsun" style="normal" weight="bold"/>
        </font>
        <font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttc">
        <font-triplet name="simsun" style="italic" weight="normal"/>
        </font>

意紅色字體的部份,需視情況而加以修改的。當字型順利的加入後,還需設定在ThinkingRock的PDF輸出時使用的字體,設定的位置在
ThinkingRock主視窗的“Tools”==>“Options”==>“Miscellaneous”==>“Action
Screens”這個頁面中,可以看到PDF目前所使用的字型,只要將字型透過下拉式選單選到所要使用的那一個就可以了,如果在“Font”的下拉式選單
中沒看到新加入的字型,就表示加入失敗囉,請重新檢查一次看是否有那裡有問題。完成以上動作後,就可以讓ThinkingRock順利的輸出中文PDF
檔,也就可以列印出來帶在身上隨時看囉!



參考資訊:



















[1]“红旗下的蛋 - 为ThinkingRock的REPORT添加中文字体”; http://www.fallleaf.net/content/view/148/9/.
 
[2]“Thinking Rock FAQs”; http://www.thinkingrock.com.au/faq.php#faq6.
 

 


2 則留言:

  1. 請問大大
    那個xml如何產生呢?
    我找到這個網頁說明
    http://sanji107.pixnet.net/blog/post/3929216
    但是還是有看沒有懂
     
    可以請你教我一下嗎?
    很希望PDF可以用繁體中文輸出啊~
    謝謝喔

    回覆刪除
  2. 不用下載FOP的,因為ThinkingRock裡面有。你可以照著這一頁網頁中的方框中的步驟一步步做應該就可以了。

    回覆刪除

dnf upgrade fails with Error: GPG check FAILED

 OS: Fedora 36 今天在做  dnf  更新的時候,突然有很多 package 都出現簽章問題無法更新。類似如下的錯誤訊息 .... is not signed. ...... is not signed. ......... is not...