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

iText生成带有中文字符但不显示的PDF,pdf,encoding,fonts,itext,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字体(即非空) 但是,生成的PDF仅显示ASCII文本“亚洲字符”,即中文字符不显

我正在使用iText创建带有中文字符的PDF。我指定的字体是我用代码加载的MS Mincho

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

new Phrase("Asian 汉字/漢字 characters", FontFactory.getFont("MS Mincho", 16, Font.NORMAL));
下面的代码适当地检索MS Mincho字体(即非空)

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


你知道为什么生成的PDF中缺少汉字吗?

由于问题已在评论中得到解决,以下是解决方案:


您应该确保a)使用具有适当(BaseFont.IDENTITY_H)的字体,b)使用它(BaseFont.EMBEDDED)。受到……的启发

现在使用这个
Font f.

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

这对我很有效,你可以试试。

你应该确保a)使用带有适当(
BaseFont.IDENTITY\u H
)的字体,b)它(
BaseFont.EMBEDDED
)。从的样品中获得灵感。谢谢。生成的PDF现在可以正确显示中文字符。无需调用FontFactory.registerDirectory()。只需使用BaseFont.createFont(“c:/windows/Fonts/MSMINCHO.TTF”、BaseFont.IDENTITY\u H、BaseFont.EMBEDDED)并实例化字体(BaseFont,size)。GetFontFactory.getFont(“MS Mincho”)不适用于汉字。实际上,
FontFactory
也可以用于创建适当的参数化字体对象。但没错,你不需要它。
BaseFont bf = BaseFont.createFont("c:/windows/Fonts/MSMINCHO.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font f = Font(bf, size);
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);