iText创建一个含有中文的pdf文档

有朋友问我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……

原文地址:https://www.cnblogs.com/erbin/p/4163108.html