有朋友問我pdfbox支不支持向pdf文檔中寫入中文。然后試了好多遍都是有亂碼,也找了好多資料沒有找到解決辦法。
但是在查找資料的過程中發現了另一個處理pdf的開源庫iText.官方介紹 http://itextpdf.com/
在這參考了兩篇博客
博客1.pdfbox&iText生成PDF文件格式及讀取PDF資料內容的小示例-完美支持中文版
博客2.iText生成pdf
iText的功能很強大,用起來也很靈活,我這里只是簡單的了解了一下創建一個包含中文的pdf的方法。以后有時間在深入了解。
廢話不多說,正題!
下載jar包,官網沒找到o(╯□╰)o,jarfire上收錄了一些jar包,下載jar包 我下載的是itext-2.0.6.jar.zip
上代碼
1 package pdf.itext; 2 3 import java.awt.Color; 4 import java.io.File; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 8 import com.lowagie.text.Document; 9 import com.lowagie.text.DocumentException; 10 import com.lowagie.text.Font; 11 import com.lowagie.text.PageSize; 12 import com.lowagie.text.Paragraph; 13 import com.lowagie.text.Rectangle; 14 import com.lowagie.text.pdf.BaseFont; 15 import com.lowagie.text.pdf.PdfWriter; 16 17 public class Handler { 18 private static String CHINESE_FONT = "SIMFANG.TTF";//仿宋字體,在C:/Windows/fonts里找的font文件放到src目錄下,參見 博客1 19 public static final Rectangle PAGE_SIZE = PageSize.A4; 20 public static final float MARGIN_LEFT = 50; 21 public static final float MARGIN_RIGHT = 50; 22 public static final float MARGIN_TOP = 50; 23 public static final float MARGIN_BOTTOM = 50; 24 public static final float SPACING = 20; 25 26 public static void createPDF(String fileName,String content) throws DocumentException, IOException { 27 File file = new File(fileName);//生成的文件 28 FileOutputStream fout = new FileOutputStream(file);//輸出流 29 Document document = new Document(PAGE_SIZE, MARGIN_LEFT, MARGIN_RIGHT, MARGIN_TOP, MARGIN_BOTTOM);//頁面大小以及布局 30 PdfWriter.getInstance(document, fout);//將文檔添加的輸出流 31 document.open();//打開文檔准備寫入 32 BaseFont baseFont = BaseFont.createFont(CHINESE_FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//創建一個支持中文的字體 33 Font chinese = new Font(baseFont, 20, Font.BOLDITALIC, Color.red);//博客1里的BaseColor在我下載的jar包中沒有就用java.awt.color代替了 34 document.add(new Paragraph(content, chinese));//寫入內容 35 document.close();//關閉文檔 36 } 37 public static void main(String[] args) throws DocumentException, IOException { 38 createPDF("apdf.pdf", "正在使用iText創建一個包含中文的pdf文檔!"); 39 } 40 }
不同版本的jar包,差異應該還挺大的,我的代碼中包結構還有方法等和博客1的差異比較大,和博客2的基本一致。
相關信息官網肯定,由於時間問題沒有仔細查看。留后吧(*^__^*) 。
寫入內容 方法比較多,創建pdf也很具體詳細,很靈活。
TO BE CONTINUED……