我試圖用打印阿拉伯文文本在細胞內表(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