2016-07-27 32 views
1

我正在爲這個問題奮鬥了幾個小時,但我找不到出路,問題是:如何在使用itext 7 API生成的PDF中顯示RTL中的阿拉伯文字符串?

我寫了一個程序,使用itext版本7生成pdf文件(還有很多它)以及一些統計數據,每一件事情都是正確的,但是當我的pdf應該包含一些阿拉伯字符串時,他們只是從左到右出現,不管我嘗試了什麼(更改字體,使用通用編碼,使字符串在表的單元格,使用畫布,...)我不能讓它們正常顯示。 下面是一段代碼我用來顯示阿拉伯語字符串:

PdfFont fArabic=PdfFontFactory.createFont(ARABICFONT,PdfEncodings.IDENTITY_H, true); 
final String ARABIC = "\u0627\u0644\u0633\u0644\u0627\u0645 \u0639\u0644\u064A\u0643\u0645"; 
document.add(new Paragraph(ARABIC).setFont(fArabic).setBaseDirection(BaseDirection.RIGHT_TO_LEFT)); 

注:我認爲iText的5.0版本或許可以解決這個問題,但正如我說我不能撤消我特別寫的代碼我有它是統計的第三個庫,而且項目已經很晚了。我只想要一個使用itext 7版本的解決方案。

+0

iText7要求模塊pdfCalligraph顯示阿拉伯文和印度文文本。這個模塊是密切的來源。參見[http://itextpdf.com/itext7/pdfcalligraph](http://itextpdf.com/itext7/pdfcalligraph)。 –

回答

2

步驟1:負載pdfCalligraph和LICENSEKEY罐子到類路徑

步驟2:從XML文件加載許可密鑰:

LicenseKey.loadLicenseFile("itextkey-typography.xml"); 

步驟3: 創建Document照例:

Document document = new Document(new PdfDocument(new PdfWriter(outFileName))); 

PdfFont bf = PdfFontFactory.createFont(ARABIC_FONT, PdfEncodings.IDENTITY_H); 
document.setFont(bf); 

document.add(new Paragraph(ARABIC_TEXT).setTextAlignment(TextAlignment.RIGHT)); 

document.close();