2011-02-28 194 views
3

我试图用打印阿拉伯文文本在细胞内表(PDF格式)iText的用下面的代码阿拉伯语iText的

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

是阿拉伯文字 但它打印“ ????”而不是阿拉伯文本

回答

5

FontFactory.getFont()(以及iText中其他任何地方)的默认编码存储在(搜索搜索)PUBLIC STRING中!这使得生活变得简单... FontFactoryImp.defaultEncoding。这被初始化为BaseFont.WINANSI(代码页(cp)1252,如果我没记错的话)。

我建议将其设置为BaseFont.IDENTITY_H

myFontFactory.getFontImp().defaultEncoding = BaseFont.IDENTITY_H 

缺点使用“身份H”的是,这迫使使用它是嵌入子集字体。如果你不想嵌入字体,你可能不会使用“身份H”。

6

可以在itextpdf 5.4.2使用com.itextpdf.text.pdf.languages.ArabicLigaturizer如下:

LanguageProcessor al = new ArabicLigaturizer(); 
preface.add(new Paragraph(al.process("گزارش"), font)); 
+0

多个问题,请不要发布重复确切的答案。每个答案都应该适合每个问题的具体需求。如果每个问题都可以用*完全相同的文本回答,请考虑将它们标记为重复项,以便相应地处理它们。 – animuson 2013-07-10 02:44:11