Java 3rd Lib.‎ > ‎

iText

中文問題

中文字出不來,是因為 iText 裡頭沒有中文字型。某些網頁上頭會說去下載 iTextAsian.jar 檔,然後
BaseFont bfChinese = BaseFont.createFont(
    "MHei-Medium", "UniCNS-UCS2-H", BaseFont.NOT_EMBEDDED
); 
Font fc = new Font(bfChinese, 14 ,0);

個人覺得太麻煩,而且裡頭字型也有限,在不想搞懂 cmap 跟 properties 的前提下,尋找簡單的方法 [遠目]。這個網頁上頭有這種寫法
BaseFont bfChinese = BaseFont.createFont(
    FONT_FILE_PATH, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED
);
Font fc = new Font(bfChinese, 14 ,0);

方法可行,只是壓根不用 iTextAsian.jar。後來開 source code 一路憑著直覺 & 硬幹技巧亂殺,從 BaseFont.createFont()TrueTypeFont.processRandomAccessFileOrArray 的建構子,發現可以給 file:/http://https://jar: 這幾種東西,另外還有 BaseFont.getResourceStream(),不過那有點麻煩,就跳過。於是就這樣子搞吧 [奸笑]
BaseFont bfChinese = BaseFont.createFont(
    "http://font.server/kaiu.ttf",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED
); 
Font fc14 = new Font(bfChinese, 14 ,0);


Comments