Японский / китайский текст в pdf с использованием iText Java - PullRequest
4 голосов
/ 26 апреля 2011

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

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

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

Ответы [ 2 ]

4 голосов
/ 26 апреля 2011

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

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

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

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

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

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

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

0 голосов
/ 26 апреля 2011

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

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

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