http://blog.yam.com/rexmen/article/1888474
透過open source iText元件來產生中文PDF文件,需要下列幾種東西:
(若沒有,直接使用iText,中文會無法顯示出來!)
(若沒有,直接使用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)
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);
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);
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(chineseStr, FontChinese);
document.add(p);
document.close();
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(chineseStr, FontChinese);
document.add(p);
document.close();
當然,表格、圖形、格式…還有得研究,以上只是簡單寫寫產生中文的解決方法。
其他可以參考以下的tutorial網址:
http://www.lowagie.com/iText/tutorial/index.html
其他可以參考以下的tutorial網址:
http://www.lowagie.com/iText/tutorial/index.html
沒有留言:
張貼留言