Для того, чтобы jasper-отчеты отображали русский текст,
необходимо:
1.
Добавить шрифт, имеющий кодировку 1251
2.
Убедиться, что текущая локаль в коде русская, если шрифт её требует.
Создание шрифта
Необходимо добавить шрифт в ireport для шаблонов: http://community.jaspersoft.com/wiki/how-show-cyrillic-letters-pdf
Далее требуется создать расширение шрифта (jar), которое необходимо добавить в classpath проекта. Его можно создавать как в ручную, так и воспользовавшись средствами ireport.
Далее требуется создать расширение шрифта (jar), которое необходимо добавить в classpath проекта. Его можно создавать как в ручную, так и воспользовавшись средствами ireport.
Создать средствами ireport:
Инструкция от техподдержки jasper здесь: http://community.jaspersoft.com/wiki/how-render-cyrillic-symbols-pdf-and-jrxml-report-jasperreports-library-custom-java-application
Краткий пересказ:
1.
Установить ireport и запустить от имени
Администратора (если windows)
2.
Скачать шрифт в формате ttf (можно по ссылке сверху)
3.
Открыть TOOLS-OPTIONS-IREPORT-FONTS нажать на кнопку
«INSTALL FONT»,
далее следовать указаниям мастера:
3.1 Выбрать
шрифт ttf, нажать NEXT
3.2
Указать имя В FAMILY NAME, по нему шрифт можно
будет найти в ireport и использовать для текста шаблонов, если есть вариации
шрифта (жирный, курсив и жирный курсив), то добавить, указать кодировку 1251 и
поставить отметку «Embed this font in the PDF-document», нажать NEXT
3.3 Добавить локаль (если не добавлять ничего, то шрифт будет работать со всеми), нажать NEXT
3.3 Добавить локаль (если не добавлять ничего, то шрифт будет работать со всеми), нажать NEXT
3.4 Finish
3.5 Выделить появившийся шрифт и нажать кнопку "Export as extention". Сохранить jar.
Создать jar cо шрифтом вручную:
Подробная инструкция по ссылке:
http://jasperreports.sourceforge.net/sample.reference/fonts/index.html#fontextensions
3.5 Выделить появившийся шрифт и нажать кнопку "Export as extention". Сохранить jar.
Создать jar cо шрифтом вручную:
Подробная инструкция по ссылке:
http://jasperreports.sourceforge.net/sample.reference/fonts/index.html#fontextensions
Данный шрифт надо использовать
для текста в при генерации шаблонов в ireport, а созданный jar добавить в classpath проекта.
Если проект собирается maven-ом, то можно распаковать jar-архив и его содержимое (папку
fonts и
jasperreports_extension.properties) добавить в src/main/resources.
Если шаблоны отчетов планируется
хранить также в src/main/resources, то эту директорию следует исключить из
фильтрации, добавив следующую запись в pom.xml:
<build>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
</resources>
</build>
Итак, шрифт создан и
применяется в тексте шаблонов отчетов, а также добавлен в java-проект.
Как правило, этого
достаточно для отображения кириллических букв. Если нет, то можно указать в
коде принудительно русскую локаль (или ту, которая указана в шрифте).
Локаль
Если при создании шрифта была указана русская локаль (в сгенерированном xml-файле из папки fonts есть строка <locale><![CDATA[ru_RU]]></locale>), то необходимо её указать в коде.
Для начала следует посмотреть, какая используется в программе, выведите в лог или stdout Locale.getDefault();
Установить русскую локаль можно двумя способами:
Для начала следует посмотреть, какая используется в программе, выведите в лог или stdout Locale.getDefault();
Установить русскую локаль можно двумя способами:
1.
Задать принудительно:
Locale.setDefault(new
Locale("ru", "RU"));
2.
Передать параметрами джаспера:
Map parameters = new HashMap();
parameters.put(JRParameter.REPORT_LOCALE, new
Locale("ru", "RU"));
Предпочтительнее пользоваться вторым способом, поскольку остальные части программы могут требовать английский язык.
Предпочтительнее пользоваться вторым способом, поскольку остальные части программы могут требовать английский язык.
Комментариев нет:
Отправить комментарий