我正在尝试使用带有以下代码的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)
凡名字是阿拉伯语文字,但它打印"????" 而不是阿拉伯文本
您可以在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)
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".
| 归档时间: |
|
| 查看次数: |
3796 次 |
| 最近记录: |