Я пытаюсь решить проблему с itext 7, требующим, чтобы библиотека pdfCalligraph писала арабский c. Мне удалось записать Arabi c в pdf с itext 7 без pdfCalligraph с использованием библиотеки icu на https://unicode-org.github.io/icu-docs/. это мой код для ее решения:
PdfWriter writer = new PdfWriter(DEST);
String text = "Arabic text";
PdfDocument pdf = new PdfDocument(writer);
public static final String _FONT = "NotoNaskhArabic-Regular.ttf";
PdfFont font = PdfFontFactory.createFont(_FONT, PdfEncodings.IDENTITY_H, true);
// Initialize document
Document document = new Document(pdf);
document.setFont(font);
document.setTextAlignment(TextAlignment.RIGHT)
document.setBaseDirection(BaseDirection.LEFT_TO_RIGHT);
document.setFontScript(Character.UnicodeScript.ARABIC);
document.add(new Paragraph(toArabic(text));
document.close();
трюк происходит с методом арабского c. Этот метод основан на ответе: { ссылка }
Теперь он работает со словами и одной строкой текста. Однако если текст занимает несколько строк, строки будут записаны в обратном направлении. поэтому последняя строка будет написана первой. Например, предположим, что следующий текст написан на арабском c:
Чиа прошла долгий путь с тех пор, как впервые появилась из забавной глиняной посуды
в телевизионной рекламе. На сегодняшний день эти семена наиболее известны как
как суперпродукт
, теперь при использовании itext pdf будет:
реклама. Сегодня эти семена наиболее известны как супер-пища
на протяжении долгого времени с тех пор, как они впервые выросли из забавной глиняной посуды на телевидении
Чиа вместо
писать сверху вниз, это записывать сверху вниз. Любая идея, почему это происходит.
Заранее спасибо