iText生成带有中文字符的PDF,但不显示

时间:2013-05-30 02:15:59

标签: pdf encoding fonts itext

我正在使用iText创建一个包含中文字符的PDF。我指定的字体是MS Mincho,我使用代码加载了

FontFactory.registerDirectory("c:/windows/Fonts/");

new Phrase("Asian 汉字/漢字 characters", FontFactory.getFont("MS Mincho", 16, Font.NORMAL));

下面的代码适当地检索MS Mincho字体(即非空),

FontFactory.getFont("MS Mincho", 16, Font.NORMAL)

但是,生成的PDF仅显示ASCII文本“亚洲字符”,即PDF上不显示中文字符。

为什么生成的PDF上缺少中文字符?

2 个答案:

答案 0 :(得分:2)

由于问题已在评论中得到解决,因此解决方案如下:

你应该确保你a)使用适当的encoding(BaseFont.IDENTITY_H)和b)embed它(BaseFont.EMBEDDED)的字体。受samples from chapter 11 iText in Action — 2nd Edition的启发。

BaseFont bf = BaseFont.createFont("c:/windows/Fonts/MSMINCHO.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font f = Font(bf, size);

现在使用此Font f.

答案 1 :(得分:0)

BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

这对我有用,您可以尝试一下。