Ukraine (Cyrillic) characters not displaying in Jasper Report PDF
I am trying to display ukranian character in jasper report as a pdf f开发者_运维问答ile. but it is not diaplaying in pdf format.
when I export report to all other format like html, csv..ukranian char is displaying.
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>
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)
register font in JVM
Font myFont = Font.createFont(Font.TRUETYPE_FONT, new File("pathToCyrillicFont")); GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(myFont);
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!
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?
just stumbled over this, the solution for me was to add the font-resource on the server. Go to you report -> edit -> add Resources
精彩评论