我试图用打印阿拉伯文文本在细胞内表(PDF格式)iText的用下面的代码阿拉伯语iText的
Font f = FontFactory.getFont("C:\\Windows\\Fonts\\arabtype.ttf");
t.addCell(new Cell(new Phrase(name,f)));
凡名是阿拉伯文字 但它打印“ ????”而不是阿拉伯文本
我试图用打印阿拉伯文文本在细胞内表(PDF格式)iText的用下面的代码阿拉伯语iText的
Font f = FontFactory.getFont("C:\\Windows\\Fonts\\arabtype.ttf");
t.addCell(new Cell(new Phrase(name,f)));
凡名是阿拉伯文字 但它打印“ ????”而不是阿拉伯文本
FontFactory.getFont()
(以及iText中其他任何地方)的默认编码存储在(搜索搜索)PUBLIC STRING中!这使得生活变得简单... FontFactoryImp.defaultEncoding。这被初始化为BaseFont.WINANSI
(代码页(cp)1252,如果我没记错的话)。
我建议将其设置为BaseFont.IDENTITY_H
:
myFontFactory.getFontImp().defaultEncoding = BaseFont.IDENTITY_H
的只缺点使用“身份H”的是,这迫使使用它是嵌入子集字体。如果你不想嵌入字体,你可能不会使用“身份H”。
可以在itextpdf 5.4.2使用com.itextpdf.text.pdf.languages.ArabicLigaturizer如下:
LanguageProcessor al = new ArabicLigaturizer();
preface.add(new Paragraph(al.process("گزارش"), font));
多个问题,请不要发布重复确切的答案。每个答案都应该适合每个问题的具体需求。如果每个问题都可以用*完全相同的文本回答,请考虑将它们标记为重复项,以便相应地处理它们。 – animuson 2013-07-10 02:44:11