2011-02-28 226 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