5
我正在使用iText创建带有中文字符的PDF。我所指定的字体是MS明朝体,我曾使用的代码加载,使用中文字符生成PDF的iText,但不显示
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上丢失?
你应该确保你)使用带有适当的[编码]字体(http://itextpdf.com/themes/keyword.php?id=394) ('BaseFont.IDENTITY_H')和b)[嵌入](http://itextpdf.com/themes/keyword.php?id=71)它('BaseFont.EMBEDDED')。受到[iText in Action - 2nd Edition](http://itextpdf.com/book/)[第11章](http://itextpdf.com/book/chapter.php?id = 11) 。 – mkl
谢谢。生成的PDF现在正确显示中文字符。不需要调用FontFactory.registerDirectory()。只需使用BaseFont.createFont(“c:/windows/Fonts/MSMINCHO.TTF”,BaseFont.IDENTITY_H,BaseFont.EMBEDDED)并实例化Font(BaseFont,size)。 FontFactory.getFont(“MS Mincho”)不适用于中文字符。 –
实际上'FontFactory'同样可以用来创建适当的参数化字体对象。但是的确如此,你并不需要它。 – mkl