2013年11月11日 星期一

Itext显示中文的三大方案

DOWNLOAD : http://www.java2s.com/Code/Jar/i/Downloaditextasianjar.htm

INF : http://www.656463.com/article/350

摘要: 在iText生成PDF入门实例我们已经预告了要解决显示中文的问题,这一节理所当然是Itext显示中文的三大方案
iText生成PDF入门实例我们已经预告了要解决显示中文的问题,这一节理所当然是Itext显示中文的三大方案

如果在上一节中你想输出“iText导出PDF入门实例”,会应该会用以下代码:
document.add(new Paragraph("iText导出PDF入门实例"));
很不幸,你看看输出的PDF显示的内容是“iTextPDF”,很明显中文没有输出来

有三种方法解决iText显示中文问题。

方法一:使用Windows系统字体(TrueType)
1
2
3
BaseFont baseFont = BaseFont.
            createFont("C:/Windows/Fonts/SIMYOU.TTF",
            BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);

方法二:使用itext-asian.jar中的字体
这个包去哪里拿?用SVN checkout《iTixt in action》这本书的源码里面有,
地址是:https://itext.svn.sourceforge.net/svnroot/itext/book
1
2
BaseFont baseFont = BaseFont.createFont("STSongStd-Light",
                            "UniGB-UCS2-H",false);

方法三:使用资源字体(ClassPath)
要把字体加到classPath中【加到src目录】,要不会出现/SIMYOU.TTF not found as file or resource.异常
1
2
BaseFont baseFont = BaseFont.createFont("/SIMYOU.TTF",
                BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);

完整代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public static void createPdf(String filename)
        throws DocumentException,IOException {
    // step 1:创建Document对象
    Document document = new Document();
    // step 2:获取PdfWriter实例
    PdfWriter.getInstance(document, new FileOutputStream(filename));
    // step 3:打开Document
    document.open();
          
    // step 4:添加内容
    //英文能正常显示
    //document.add(new Paragraph("Hello World!"));
    //PDF上只输出iTextPDF,中文显示不出来
    //document.add(new Paragraph("iText导出PDF入门实例"));
    //解决中文显示问题的解决方法:
    //方法一:使用Windows系统字体(TrueType)
    //BaseFont baseFont = BaseFont.
        createFont("C:/Windows/Fonts/SIMYOU.TTF",
        BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
    //方法二:使用itext-asian.jar中的字体
    //BaseFont baseFont = BaseFont
        .createFont("STSongStd-Light""UniGB-UCS2-H",false);
    //方法三:使用资源字体(ClassPath)
    BaseFont baseFont = BaseFont
        .createFont("/SIMYOU.TTF",
        BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
           
    Font font = new Font(baseFont);   
    document.add(new Paragraph("iText导出PDF入门实例",font));  
          
    // step 5:关闭打开的Document
    document.close();
}

沒有留言:

張貼留言