博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

iText输出中文问题

Posted on 2013-02-01 09:35  无、为  阅读(12577)  评论(0编辑  收藏  举报

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了。