Поддержка iText для хинди и арабского
Наш проект нуждается в динамическом создании PDF на 6 языках, который состоит из хинди и арабского языка. iText прекрасно работает для других языков, кроме этих двух. Может кто-нибудь сообщить мне, если текущая версия iText(5.5.5) имеет лигатурную реализацию для хинди и арабского языка?
1 ответ
об арабском языке: я так понимаю, вы сталкиваетесь с одной из двух проблем:
- арабские слова не появляются.
- арабские слова появляются как:
решение:
- сначала: обновите itext 5.5.8 до реализации itext 7:
https://search.maven.org/artifact/com.itextpdf/itext7-core/7.2.2/pom
- затем отредактируйте свой код:
String font = "your Arabic font";
PdfFontFactory.register(font);
FontProgram fontProgram = FontProgramFactory.createFont(font, true);
PdfFont f = PdfFontFactory.createFont(fontProgram, PdfEncodings.IDENTITY_H);
LanguageProcessor languageProcessor = new ArabicLigaturizer();
com.itextpdf.kernel.pdf.PdfDocument tempPdfDoc = new
com.itextpdf.kernel.pdf.PdfDocument(new PdfReader(pdfFile.getPath()), TempWriter);
com.itextpdf.layout.Document TempDoc = new
com.itextpdf.layout.Document(tempPdfDoc);
com.itextpdf.layout.element.Paragraph paragraph0 = new
com.itextpdf.layout.element.Paragraph(languageProcessor.process("الاستماره الالكترونية"))
.setFont(f).setBaseDirection(BaseDirection.RIGHT_TO_LEFT)
.setFontSize(15);
// и посмотрите, как я использовал setBaseDirection & и не используйте TextAlignment, он будет работать без него