Jasper Reports PDF не экспортирует кириллические значения

Я пытаюсь экспортировать jasper как pdf, но он не показывает значения кириллицы. Когда я экспортирую его как excel, он показывает, и результат в порядке, но когда я пытаюсь экспортировать его как PDF, он не экспортирует кириллические значения. Значения кириллицы пишутся не кириллическим шрифтом, а кириллической клавиатурой.

введите описание изображения здесь

Код, который я использую для экспорта:

JRExporter e = new JRPdfExporter();
                e.setParameter(JRPdfExporterParameter.JASPER_PRINT, jasperPrint);
                e.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, outStream);
                e.setParameter(JRPdfExporterParameter.OUTPUT_FILE_NAME, NAME);

Я даже попытался указать параметр ниже:

e.setParameter(JRPdfExporterParameter.CHARACTER_ENCODING, "UTF-8");

но не удалось. Какие-либо предложения?


person Nick Gun    schedule 02.12.2015    source источник
comment
Результат вывода находится здесь: snag.gy/ip5F7.jpg   -  person Nick Gun    schedule 02.12.2015
comment
Вам необходимо добавить расширение шрифта, аналогичное проблеме stackoverflow.com/questions/33940126/. Сообщите нам, если после добавления расширения шрифта (Idenity-H, встроенный) у вас все еще есть проблемы   -  person Petter Friberg    schedule 02.12.2015
comment
Какое отношение имеет моя проблема к добавлению расширения шрифта в iReport или JasperSoft? Мой экспорт выполняется с помощью кода Java, выполняющего отчет jasper. Тем не менее, зависимость для jasperreports-fonts также указана в maven.   -  person Nick Gun    schedule 02.12.2015
comment
IReport или JasperSoft были указаны только как инструмент для создания jar (контрольная точка 3 и 4 ответа) расширений шрифтов, которые необходимо включить в ваш Java-код. Но если вы уверены, что у вас правильный шрифт - расширение (с включенным шрифтом .ttf, поддерживающим ваши символы), включенное в ваш проект, я предполагаю, что это не проблема, но я все равно сделаю ставку на проблему расширения шрифта ....   -  person Petter Friberg    schedule 02.12.2015
comment
Я предлагаю вам отредактировать свой вопрос, указав в файлах fontsFamily.xml и jasperreports_extension.properties, какой .ttf вы используете. (и если где можно скачать .ttf)   -  person Petter Friberg    schedule 02.12.2015
comment
Я использую шрифт Tahoma   -  person Nick Gun    schedule 02.12.2015
comment
и вы знакомы с тем, как создать fontsFamily.xml и что вам нужно связать шрифт .ttf?   -  person Petter Friberg    schedule 02.12.2015
comment
Я не был, пока вы не указали на это :) На самом деле теперь, когда я изменил шрифт на DejaVu Sans, значения отображаются правильно. Ваша точка зрения верна. Большое спасибо. Вы можете ответить на вопрос   -  person Nick Gun    schedule 02.12.2015
comment
Вы использовали iReport или JasperSoft Studio для включения .jar или вы вручную включали файлы и .ttf в свой проект? Нужно знать, иначе я не знаю, как ответить   -  person Petter Friberg    schedule 02.12.2015
comment
Я использовал JasperSoft для создания отчета. Я разработал и установил шрифты в JasperSoft. Затем в свой проект я включил зависимости от jasper и сделал бизнес-логику. Я предоставляю источник данных как bean-компонент, поэтому я могу запускать отчет через свой проект только путем предоставления jrdatabeansource. Я не делал нестандартных шрифтов. При переходе с тахомы на DejaVu все заработало   -  person Nick Gun    schedule 02.12.2015
comment
У вас наверняка проблема со шрифтами. Ищите ответ на это сообщение: конфигурация jasperreports для cyr текста   -  person shcherbak    schedule 02.12.2015
comment
DejaVu Sans - единственный возможный шрифт? Я использовал стандартный (SansSerif), и после перехода на DejaVu Sans те же строки выглядят намного длиннее и не подходят для своих контейнеров.   -  person Sasha Shpota    schedule 05.03.2019


Ответы (1)


В отчете Jasper используется iText, и всегда, когда символ не отображается в pdf, это должен быть контрольный список:

  1. Поддерживается ли мой фактический .tff (OpenType) и может ли шрифт на самом деле визуализировать символ. Не все шрифты отображают все символы в UTF-8, см. Как проверить, правильно ли отображается мой шрифт в PDF?
  2. Могу ли я передать в iText правильную кодировку? В случае сомнений (или вообще) используйте кодировку Identity-H, это рекомендуется для новых стандартов PDF и дает вам возможность смешивать разные кодировки.
  3. Является ли мой шрифт встроенным, чтобы, если я делюсь PDF-файлом, также компьютеры, на которых нет этого шрифта, могли отображать содержимое?

Как я могу убедиться, что это JasperReport?

устаревший метод заключался в установке атрибутов на textElement

<textElement>
  <font pdfFontName="Helvetica" pdfEncoding="Identity-H" isPdfEmbedded="true"/>
  <paragraph lineSpacing="Single"/>
</textElement>

Текущий нерекомендуемый метод v 3-6 заключается в добавлении расширений шрифтов, и это легко достигается с помощью таких инструментов, как iReport или JasperSoft Studio, который может сгенерировать .jar вашего расширения шрифта, чтобы вы могли напрямую включить его в свой путь к классам.

Как сгенерировать расширение шрифта .jar с помощью iReport или JasperSoft Studio.

РЕДАКТИРОВАТЬ: Проблема OP была 1 в контрольном списке (шрифт .ttf не может отображаться), но, безусловно, он должен рассмотреть и 2, и 3, используя не устаревший метод.

person Petter Friberg    schedule 02.12.2015