2016-07-27 25 views
1

Ich habe mit diesem Problem seit Stunden zu kämpfen, aber ich kann keinen Ausweg finden, das Problem ist, dass:Wie werden arabische Strings aus RTL in PDF angezeigt, die mit itext 7 API generiert wurden?

Ich schrieb ein Programm, das eine PDF-Datei mit Itext Version 7 (und eine Menge davon Englisch: www.mjfriendship.de/en/index.php?op...39&Itemid=32) zusammen mit einigen Statistiken, ist alles bis hier richtig, aber wenn mein pdf einige arabische Zeichenfolgen enthalten soll, erscheinen sie einfach von links nach rechts, egal was ich probiert habe (Zeichensätze ändern, universelle Codierungen verwenden, die Zeichenkette in einem Zelle der Tabelle, mit Leinwand, ...) Ich kann sie nicht normal erscheinen lassen. ist hier ein Stück Code, den ich für die Anzeige von arabischen Zeichenfolge verwenden:

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)); 

Anmerkung: Ich denke, dass itext 5-Version vielleicht es lösen kann, aber wie gesagt, ich kann das nicht mehr rückgängig gemacht kann ich vor allem schrieb ich mit es ist eine dritte Bibliothek für Statistiken und auch das Projekt ist schon spät. Ich will nur eine Lösung mit Itext 7 Version.

+0

iText7 benötigt das Modul pdfCalligraph zur Anzeige von arabischem und indischem Text. Dieses Modul ist eine enge Quelle. Siehe [http://itextpdf.com/itext7/pdfcalligraph](http://itextpdf.com/itext7/pdfcalligraph]. –

Antwort

2

Schritt 1: Last pdfCalligraph und licensekey Gläser in Ihrem Classpath

Schritt 2: Lastlizenzschlüssel von XML-Datei:

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

Schritt 3: Erstellen Sie Ihre Document wie gewohnt:

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();