在itext中的阿拉伯语

ahm*_*ury 3 java arabic itext

我正在尝试使用带有以下代码的Itext在表格中的单元格(pdf)中打印阿拉伯文本

Font f = FontFactory.getFont("C:\\Windows\\Fonts\\arabtype.ttf");
t.addCell(new Cell(new Phrase(name,f)));
Run Code Online (Sandbox Code Playgroud)

名字是阿拉伯语文字,但它打印"????" 而不是阿拉伯文本

abo*_*zar 6

您可以在itextpdf 5.4.2中使用com.itextpdf.text.pdf.languages.ArabicLigaturizer,如下所示:

LanguageProcessor al = new ArabicLigaturizer();
preface.add(new Paragraph(al.process("?????"), font));
Run Code Online (Sandbox Code Playgroud)


Mar*_*rer 5

FontFactory.getFont()(以及iText中的其他任何地方)的默认编码存储在(搜索搜索)公共字符串中!这让生活变得轻松...... FontFactoryImp.defaultEncoding.BaseFont.WINANSI如果我没记错的话,这被初始化为(代码页(cp)1252).

我建议将其设置为BaseFont.IDENTITY_H:

myFontFactory.getFontImp().defaultEncoding = BaseFont.IDENTITY_H
Run Code Online (Sandbox Code Playgroud)

使用"身份H" 的唯一缺点是,这会强制使用它的字体是嵌入式子集.如果您不想嵌入字体,则不能使用"Identity H".