Японский / китайский текст в pdf с использованием iText Java

#java #unicode #internationalization #itext

#java #Юникод #интернационализация #itext

Вопрос:

Мне нужно добавить японский / китайский текст из веб-ответа xml в pdf с использованием iText на java. Я попробовал следующий код после копирования KozMinPro-Regular.ttf на мой c:WINDOWSFonts папка, но сбой.

Font font = new Font(BaseFont.createFont("KozMinPro-Regular", "UniJIS-UCS2-H", BaseFont.EMBEDDED), 10);

Кто-нибудь может мне помочь?

Комментарии:

1. вы получаете исключение, null, неправильный шрифт?

2. Вам нужен полный путь. В случае файлов шрифтов, содержащих более одного шрифта (.ttc), вам также необходимо добавить «, 1» или «, 2», чтобы определить, какой шрифт вы хотите. PS: Я всегда предпочитаю «Identity-H».

Ответ №1:

Вам следует использовать iTextAsian (дополнительный JAR-файл).

Некоторое описание cmap_info.txt внутри iTextAsian.jar .

Обратите внимание, что какое бы значение вы ни передали для параметра ’embedded’ с помощью метода BaseFont.CreateFont, шрифт НЕ БУДЕТ встроен. Чтобы понять, почему, пожалуйста, прочитайте следующую информацию.

Шрифты, которые используются в Acrobat Reader при просмотре PDF-файла, использующего шрифты CJK, будут загружены в одном или нескольких наборах шрифтов. Вы можете загрузить эти пакеты шрифтов самостоятельно по этому URL:http://www.adobe.com/products/acrobat/acrrasianfontpack.html

На этой странице вы можете найти следующую информацию: «Если автор файла Adobe (R) Portable Document Format (PDF) вставляет шрифты CJK и Central European (CE) в документ PDF, то любая языковая версия программного обеспечения Adobe Reader (R) сможет отображать текст CJK и CE в любой системе без дополнительного программного обеспечения.

Если автор PDF-документа использует шрифты CJK или CE, но не внедряет их в документ, то для просмотра файла Adobe PDF на неродных системах потребуется установить правильные шрифты.»

Если необходимые шрифты не встроены в файл PDF, вам не следует использовать абсолютный путь для файлов шрифтов.
Создайте jar-файл с файлами шрифтов и включите его в запись classpath.

Ответ №2:

Я не тестировал это, но согласно этой странице

Использование установленных шрифтов примерно такое.

 Font font = new Font(BaseFont.createFont("C:\Windows\Fonts\KozMinPro-Regular.ttf,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED), 10);