Как настроить iText для поддержки азиатских символов?

Мое приложение Java создает PDF-файлы с помощью iText. Иногда контент азиатский, что не работает. Азиатские символы не видны.

Я нашел iTextAsian.jar на странице загрузки iText, но не знаю, как им пользоваться.

Цель состоит в том, чтобы использовать мой любимый шрифт по умолчанию. Но когда символ недоступен, для этого символа используется другой шрифт. Я читал, iText может автоматически выбирать шрифты, но как это настроить?

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


person Witek    schedule 22.11.2011    source источник
comment
Это не символы, это символы.   -  person NullUserException    schedule 22.11.2011
comment
У всех ваших пользователей установлен пакет азиатских шрифтов со своими программами просмотра PDF или у вас есть контроль над установленной базой программ просмотра PDF, чтобы вы могли гарантировать, что они это сделают? Если нет, может ли использование встроенных шрифтов PDF сделать полученный PDF слишком большим - iText встраивает только глифы, необходимые для документа?   -  person Mike Samuel    schedule 22.11.2011
comment
Нет контроля над пользователями. Это веб-приложение, которое создает PDF-файлы. PDF-файлы очень большого размера лучше, чем PDF-файлы без азиатских символов. Следующим шагом будет определение того, содержит ли пользовательский контент азиатские символы, и пропустить добавление дополнительных шрифтов на основе этого.   -  person Witek    schedule 22.11.2011


Ответы (1)


  • Вы можете определить «FontSelector», а затем добавить свои шрифты (fontSelector.AddFont). Теперь iText выберет недоступный символ из следующего определенного шрифта с помощью метода fontSelector.Process.
  • Азиатские символы обычно являются Unicode, поэтому вам нужно установить «BaseFont.IDENTITY_H» вместо символов Ansi (например, FontFactory.GetFont («tahoma», BaseFont.IDENTITY_H)).
  • Если это RTL, вам нужно обернуть текст элементами, у которых есть свойство направления бега, и установить для него значение rtl.
person VahidN    schedule 24.11.2011
comment
Какие шрифты мне нужно добавить через addFont ()? - person Witek; 28.11.2011
comment
BaseFont.IDENTITY_H встраивает выбранные шрифты .ttf в окончательный PDF-файл. Так что ищите шрифты, в которых есть полные символы этого языка. - person VahidN; 28.11.2011
comment
Поскольку пользователи на веб-сайтах могут приходить отовсюду, мне нужно добавить шрифты для всех символов в селектор, верно? Как узнать, какие (10?) Бесплатных шрифтов вместе покрывают 99% всех символов? - person Witek; 29.11.2011
comment
Да, вам нужно добавить эти шрифты, и только метод fontSelector.Process может выбрать правильный автоматически. вот несколько бесплатных азиатских и арабских шрифтов: 1001freefonts.com/asian-fonts.php & freearabicfonts.com/Free_Arabic_Fonts - person VahidN; 29.11.2011