Я использую OpenPDF для создания PDF-файла из приложения Spring Boot. Все работает нормально, когда я использую французский или английский алфавит, но когда я пишу на арабском языке, ничего не отображается.
Я читал, что я должен использовать форму Unicode для арабских слов. Например, арабское слово الاسم, преобразованное в форму Unicode, дает следующую строку:
\u0627\u0644\u0627\u0633\u0645
Поэтому мне интересно, есть ли способ преобразовать арабские слова в Unicode на Java, и могу ли я использовать этот подход с OpenPDF? Или есть альтернативный способ написать арабский в PDF с помощью OpenPDF и Java 17/Spring Boot?
Этот пример записи арабского текста в PDF с использованием OpenPDF решает мою проблему. (RightToLeft.java в документации OpenPDF.)
Основная идея состоит в том, чтобы создать BaseFont, который поддерживает арабский текст, как показано в строке 51:
BaseFont bf = BaseFont.createFont("c:\\windows\\fonts\\times.ttf", BaseFont.IDENTITY_H, true);
Вы можете заменить этот файл .ttf, поддерживающий арабский текст, своим собственным файлом. Вы помещаете его в папку ресурсов и называете так: src/main/resources/youTtfFile.ttf.
Вам также необходимо указать направление справа налево (RTL), как показано в строке 61:
ct.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);