在城市的一角低調喧嘩。

關於部落格
在數位的城市裡,尋找那遺落各地一點一滴的人文元素。
  • 112285

    累積人氣

  • 2

    今日人氣

    0

    訂閱人氣

使用JAVA透過 iText 來產生PDF文件

透過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:\WINDOWSFONTS下的字型,找出其原始檔名 (可以使用TTF以及TTC字集兩種)
1. 標楷體 C:WINDOWSFontsKAIU.TTF
BaseFont bfChinese = BaseFont.createFont("C:\windows\fonts\KAIU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);


2. 細明體/新細明體 C:WINDOWSFontsMINGLIU.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(chineseStr, FontChinese);
document.add(p);

document.close();

 

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

相簿設定
標籤設定
相簿狀態