2013年11月9日 星期六

itext-font-chinese

http://www.itextpdf.com/examples/iia.php?id=214


http://blog.yam.com/rexmen/article/1888474

透過open source iText元件來產生中文PDF文件,需要下列幾種東西:
(若沒有,直接使用iText,中文會無法顯示出來!)

1. iText本身的jar檔 http://prdownloads.sourceforge.net/itext/itext-1.4.jar
2. 支援亞洲字型(CJK)iTextAsian.jar檔  http://itext.sourceforge.net/downloads/iTextAsian.jar
3. Adobe Reader的中文語言包pack (我使用7.07版的Reader配合7.0的language pack)

將其上面所需要的jar檔放入CLASSPATH中


如何使用中文字型呢?

找找C:\\WINDOWS\FONTS\下的字型,找出其原始檔名 (可以使用TTF以及TTC字集兩種)
1. 標楷體 C:\WINDOWS\Fonts\KAIU.TTF
BaseFont bfChinese = BaseFont.createFont("C:\\windows\\fonts\\KAIU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);


2. 細明體/新細明體 C:\WINDOWS\Fonts\MINGLIU.TTC  (到時要使用其index(如0, 1)來指定哪一個)
BaseFont bfChinese = BaseFont.createFont("C:\\windows\\fonts\\MINGLIU.TTC,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

字型的宣告法:
Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);



產生文件的範例:(不含exception)
Document document = new Document();

PdfWriter.getInstance(document, new FileOutputStream("test.pdf"));
document.open();

String chineseStr = "大家好!";

BaseFont bfChinese = BaseFont.createFont("C:\\windows\\fonts\\KAIU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);

Paragraph p = new Paragraph(chineseStrFontChinese);
document.add(p);

document.close();



當然,表格、圖形、格式…還有得研究,以上只是簡單寫寫產生中文的解決方法。
其他可以參考以下的tutorial網址:
http://www.lowagie.com/iText/tutorial/index.html

沒有留言:

張貼留言