barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

воскресенье, 27 декабря 2015 г.

SLES и birt: русские буквы в pdf

Проблема

Есть SLES, на нем установлен Tomcat, на котором крутится Birt Report Viewer. На последнем задеплоен отчет, используемый для генерации pdf-файлов, содержащих русский текст. Проблема заключается в том, что русские символы в отчете выгружаются моноширинным шрифтом, причем вне зависимости от того, какой шрифт указан в самом отчете (Calibri, Arial или просто sans-serif).

Решение

Устанавливаем пакет msttcorefonts (http://software.opensuse.org/download.html?project=home%3Acsa7fff%3Aadei&package=msttcorefonts), он распакует в /usr/share/fonts/msttcorefonts некоторый набор TrueType-шрифтов. 
Следующая задача - указать Birt'у на эту папку. Делается это путем правки файла WEB-INF/lib/org.eclipse.birt.runtime_4.5.0.jar/fontsConfig.xml. Этот файл содержит блок <font-paths> с перечнем путей, по которым birt ищет шрифты. Все имеющиеся там записи можно удалить, и добавить одну новую:
<path path="/usr/share/fonts/msttcorefonts" />
Вуаля, шрифты, которые есть в папке /usr/share/fonts/msttcorefonts, можно использовать в отчетах.
ЗЫ Вообще, в файлах fontsConfig.xml, fontsConfig_pdf.xml и fontsConfig_linux.xml есть и другие настройки, которые могут оказаться полезными: например, можно выбрать, какой шрифт будет использоваться при указании семейства "serif", указать fallback-шрифт, используемый, когда для символа невозможно найти глиф в указанном шрифте (<composite-font name="all-fonts"  ... />) и пр.

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

Отправить комментарий