2016-07-27 3 views
1

Я борюсь с этой проблемой часами, но я не могу найти выход, проблема в том, что:Как отобразить арабские строки из RTL в формате PDF, сгенерированные с помощью itext 7 API?

Я написал программу, которая генерирует pdf-файл, используя его версию 7 (и многое из этого), наряду с некоторыми статистическими данными, все верно до сих пор, но когда мой 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 версии, возможно, может решить эту проблему, но, как я сказал, что я не могу отменить код, который я написал, особенно я с это третья библиотека для статистики, а также проект уже задерживается. Мне просто нужно решение, использующее версию 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();