我正在使用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上缺少中文字符?
答案 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);
这对我有用,您可以尝试一下。