iText默认不支持亚洲语言,导致iText生成中文出现问题,一般都是中文内容不能出现在pdf上,这是因为没有中文字体的原因.
要让iText支持中文,需要两个jar包:
iText包:itextpdf-5.3.5.jar(这里用的是5.3.5)
iText语言包:iTextAsian.jar
要使iText能够输出中文,首先需要创建一个字体对象,代码如下:
// 产生PDF字体 public static Font setChineseFont() { BaseFont bf = null; Font fontChinese = null; try { bf = BaseFont.createFont("resources/SIMKAI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); fontChinese = new Font(bf, 12, Font.NORMAL); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return fontChinese; }
上面的SIMKAI.FF是字体文件,可在C:\\WINDOWS\\Fonts下找到,我这使用的是相对路径,所以就在项目根目录创建了一个resources目录用来存在项目资源。
到这里,配置中文字体Ok,只要在使用iText生成pdf内容时,将上述方法返回的Font对象传入即可。
以下是pdf添加段落,为段落制定字体的代码:
/** * setChineseFont()是上面创建字体的方法 */ doc.add(new Paragraph("太极~~", setChineseFont()));
这样,中文输出就OK了。