Ukraine (Cyrillic) characters not displaying in Jasper Report PDF
Asked Answered
C

5

13

I am trying to display ukranian character in jasper report as a pdf file. but it is not diaplaying in pdf format.

when I export report to all other format like html, csv..ukranian char is displaying.

Cryogen answered 23/2, 2011 at 16:28 Comment(2)
Do the fonts used for export have the characters necessary? I'm not sure what method Jasper Report uses, but the PDF file usually contains the font used for generating it - which means that font must support international characters.Crosspatch
maryniuk.blogspot.com/2010/09/… this helped meSmallsword
B
10

Set some text field properties at iReport. Use font DejaVu Sans. Set pdf encoding to Cp1251 and isPdfEmbedded to true.

Ex.: <font fontName="DejaVu Sans" isStrikeThrough="false" pdfEncoding="Cp1251" isPdfEmbedded="true" />

jasperreports fonts as maven dependency:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-fonts</artifactId>
</dependency>
Barham answered 29/7, 2013 at 20:6 Comment(1)
3 years later... pdfEncoding is deprecated however jasperreports-fonts uses font-extensions if you like to use your own font, see #34042119 for font-extension example.Ligurian
I
8

First, make sure you have the right encoding:

JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");

Then you should change the fonts to ones that support cyrillic. This is done via styles:

public void addPdfFontsToStyles(JRStyle[] styles) {
    if (styles != null) {
        for (JRStyle style : styles) {
            if (style.getName().equals("reportStyle")) {
                style.setPdfFontName("/com/yourcompany/fonts/times.ttf");
                style.setBlankWhenNull(true);
            }

            if (style.getName().equals("reportBoldStyle")) {
                style.setPdfFontName("/com/yourcompany/fonts/timesbd.ttf");
                style.setBlankWhenNull(true);
            }

        }
    }
}

And invoke this method with addPdfFontsToStyles(jasperReport.getStyles());

Of course, the prerequisites are:

  • your text is using one of the above style names
  • you have the ttf files on the classpath

That should do it (I'm taking the code from a working cyrilic application)

Illtimed answered 23/2, 2011 at 16:49 Comment(0)
D
2
  1. register font in JVM

    Font myFont = Font.createFont(Font.TRUETYPE_FONT, new File("pathToCyrillicFont"));
    GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(myFont); 
    
  2. add to Cyrillic field this:

    <textElement>
       <font
                      fontName="fontName"
                      pdfFontName="pathToCyrillicFont"
                      size="13"
                      isBold="false"
                      isItalic="false"
                      isUnderline="false"
                      isPdfEmbedded ="true"
                      pdfEncoding ="Cp1251"
                      isStrikeThrough="false"
       /> 
     </textElement>
    

Enjoy!

Diapositive answered 27/4, 2013 at 16:14 Comment(0)
L
2

Since jasper report v5, v6 the correct way to display characters in pdf is to use font-extension

For more information see these question on stackoverflow:

Jasper Reports PDF doesn't export cyrillic values

How can I display "$£Ω€απ⅔" in Jasperserver PDF using iReport?

Ligurian answered 18/1, 2016 at 17:1 Comment(0)
U
0

just stumbled over this, the solution for me was to add the font-resource on the server. Go to you report -> edit -> add Resources

Ultranationalism answered 15/2, 2022 at 15:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.