2009/08/20

Java iText 如何在 PDF 顯示中文字

利用 Java iText 產生 PDF 檔時, 最常遇到如何正常顯示 PDF, 下面就大致介紹一下 :

使用 iText 提供的兩個 class : com.lowagie.text.pdf.BaseFontcom.lowagie.text.Font,

說明, 請見程式碼 :
 程式碼
// 預設中文字型
// 優 : 產生的檔案較小一些
// 缺 : 資料不易對齊

BaseFont bf = BaseFont.createFont( "MHei-Medium", "UniCNS-UCS2-H", BaseFont.EMBEDDED );

// kaiu.ttf 為標楷體
// 優 : 資料容易對齊
// 缺 : 產生的檔案較大一些, 且小字體列印較不清楚

BaseFont bf = BaseFont.createFont( request.getRealPath("") + "/Font/kaiu.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED );

// mingliu.ttc,0 代表 "細明體"
// 優 : 資料容易對齊, 列印也較清楚
// 缺 : 產生的檔案較大一些
// mingliu.ttc,1 代表 "新細明體"

BaseFont bf = BaseFont.createFont( request.getRealPath("") + "/Font/mingliu.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED );

// 設定字型大小
// Font.NORMAL:正常
// Font.BOLD:粗體
// Font.ITALIC:斜體
// Font.BOLD | Font.ITALIC:粗斜體

Font font = new Font( bf, 12, Font.NORMAL );

// 寫入文字
document.add( new Paragraph("Hello World, 大家好 !!", font) );