Jasper Reports PDF doesn't export cyrillic values

Nick Gun picture Nick Gun · Dec 2, 2015 · Viewed 13.4k times · Source

I am trying to export jasper as pdf but It does not show the cyrillic values. When I export it as excel it does show and the output is fine, but when I try to export is as PDF it does not export the cyrillic values. The cyrillic values are not written in cyrillic font, they are written as cyrillic keyboard.

enter image description here

The code I use to export is:

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

I even tried to specift the parameter below:

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

but did not succeed. Any suggestions?

Answer

Petter Friberg picture Petter Friberg · Dec 2, 2015

Jasper report uses iText and always when a char is not rendered in pdf this should be the checklist:

  1. Is my actual .tff supported (OpenType) and can the font actually render the character. Not all fonts render all characters in UTF-8, see How can I test if my font is rendered correctly in pdf?
  2. Do I pass correct encoding to iText. In doubts (or in general) use the encoding Identity-H this is recommend for newer PDF standards and gives you the ability to mix different encoding.
  3. Is my font embedded so that if I share the pdf also computers not having this font can display the content?

How can I ensure this is JasperReport?

The deprecated method was to set attributes on the textElement

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

The current non deprecated method v 3-6, is to add Font Extensions and this is easily achieved by using tools like iReport or JasperSoft Studio that can generate a .jar of your font extension so that you can include it in your classpath directly.

How to generate font extension .jar using iReport or JasperSoft Studio.

EDIT: The problem of OP was 1 on checklist (.ttf font could not render), but surely he should consider both 2 and 3 using non deprecated method.