almost 4 years ago

報表難免跑不掉需要使用到中文字的地方,但是你可能會遇到在iReport Designer看起來好好的,但是打包出來執行卻看不到中文字,這時候你需要將字型另外打包。

1.先準備好你需要的字型比如說Windows內附的標楷體(kaiu.ttf),把他從Windows/Fonts複製到一般資料夾。
ps.建議最好是可以找到ttf的副檔名,ttc的好像不行,不知道原因。

2.在iReport Designer新增你指定的字型
工具->選項->再切換到Fonts頁籤


新增標楷體

Family Name最好是改成英文的,我不太想看到原始檔內一堆"標楷體"啊,下面是粗體、斜體等配置
PDF Encoding選Identity-H (Unicode with horizontal writing)
Embed this font in the PDF document要打勾

直接下一步到完成,你可以看到多一個字型了

接下來點選你需要呈現中文字的欄位


變更Font name的屬性,框框內文字不見了目前沒解,不過暫時不影響

一樣將報表編譯後就完成報表的部分

接下來因為執行環境可能沒這個字型檔,所以把字型檔打包提供出來最安全
一樣叫出字型的頁面,這次我們選擇Export extension


儲存成kaiu.jar

完成後這個jar檔就是執行環境需要的字型檔,但是直接用是有問題的,還需要改一下
將jar檔用rar打開進到fonts資料夾下將xml檔抽出來看(檔案名稱每次匯出都不一樣)

fontsfamily1384834385680.xml
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
   <fontFamily name="kaiu">
       <normal><![CDATA[fonts/kaiu.ttf]]></normal>
       <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
       <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
   </fontFamily>
</fontFamilies>

因為有CDATA區段,導致解析階段的異常,也就無法匯入字型檔了,而這部分我也在官方的字型檔(jasperreports-fonts-5.5.0.jar)中驗證過了沒有使用CDATA表示。
動手改成一般xml

fontsfamily1384834385680.xml
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
   <fontFamily name="kaiu">
       <normal>fonts/kaiu.ttf</normal>
       <pdfEncoding>Identity-H</pdfEncoding>
       <pdfEmbedded>true</pdfEmbedded>
   </fontFamily>
</fontFamilies>

再包回去jar檔內,這次你的字型檔才能正確被載入到你的jvm內

試一下執行結果


Good 收工

← jasperreport and ireport use javabean in 5.5 Jasperreports and Ireport use Customization Javabean in 5.5 →
 
comments powered by Disqus