iText解决中文问字体问题显示中文
今天在用itext 生成 PDF 报表的时候里面有中文的,生成PDF报表后中文都不显示,为了解决这个问题,找了很多例子,觉得这个例子讲的最全,现在分享下。
总结一下,基本上有三种方法解决iText显示中文问题。
方法一:使用Windows系统字体(TrueType)
方法二:使用iTextAsian.jar中的字体
方法三:使用资源字体(ClassPath)
由于比较简单,直接上代码了。
[java]view plaincopyprint?
1. package oliver.itext.demo;
2. import java.io.File;
3. import java.io.FileOutputStream;
4. import java.io.IOException;
5. import java.io.OutputStream;
6. import com.itextpdf.text.Document;
7. import com.itextpdf.text.DocumentException;
8. import com.itextpdf.text.Font;
9. import com.itextpdf.text.Paragraph;
10.import com.itextpdf.text.pdf.BaseFont;
11.import com.itextpdf.text.pdf.PdfWriter;
12./**
13. * <b>PDF2Chinese。</b>
14. * <p><b>详细说明:</b></p>
15. * <!-- 在此添加详细说明 -->
16. * 三种方法解决iText中文问题。
17. * <p><b>修改列表:</b></p>
18. * <table width="100%" cellSpacing=1 cellPadding=3 border=1>
19. * <tr bgcolor="#CCCCFF"><td>序号</td><td>作者</td><td>修改日期</td><td>修改内容</td></tr>
20. * <!-- 在此添加修改列表,参考第一行内容 -->
21. * <tr><td>1</td><td>Oliver</td><td>2010-10-8 上午09:40:44</td><td>建立类型</td></tr>
22. *
23. * </table>
24. * @version 1.0
25. * @author Oliver
26. * @since 1.0
27. */
28.public class PDF2Chinese
29.{
30. public static void main(String[] args) throws DocumentException, IOException
31. {
32. Document document = new Document();
33. OutputStream os = new FileOutputStream(new File("chinese.pdf"));
34. PdfWriter.getInstance(document,os);
35. document.open();
36. //方法一:使用Windows系统字体(TrueType)
37. BaseFont baseFont = BaseFont.createFont("C:/Windows/Fonts/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
38.
39. //方法二:使用iTextAsian.jar中的字体
40. //BaseFont baseFont = BaseFont.createFont("STSong-Light",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
41.
42. //方法三:使用资源字体(ClassPath)
43. ////BaseFont baseFont = BaseFont.createFont("/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
44.
45. Font font = new Font(baseFont);
46. document.add(new Paragraph("解决中文问题了!",font));
47. document.close();
48. }
49.}
好了,现在可以打开生成的chinese.pdf看到中文了!