乌克兰(西里尔文)字符未显示在Jasper报告PDF中
我试图在jasper报告中显示ukranian字符作为pdf文件。 但它不是以pdf格式显示的。
当我将报告导出到所有其他格式如html时,显示csv..ukranian char。
在iReport上设置一些文本字段属性。 使用字体DejaVu Sans 。 将pdf编码设置为Cp1251 ,将isPdfEmbedded设置为true 。
例如:
jasperreports字体作为maven依赖:
net.sf.jasperreports jasperreports-fonts
首先,确保您拥有正确的编码:
JRPdfExporter exporter = new JRPdfExporter(); exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");
然后你应该将字体更改为支持西里尔字母的字体。 这是通过样式完成的:
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); } } } }
并使用addPdfFontsToStyles(jasperReport.getStyles());
调用此方法addPdfFontsToStyles(jasperReport.getStyles());
当然,先决条件是:
- 您的文本正在使用上述样式名称之一
- 你有类路径上的ttf文件
应该这样做(我从一个有效的cyrilic应用程序中获取代码)
-
在JVM中注册字体
Font myFont = Font.createFont(Font.TRUETYPE_FONT, new File("pathToCyrillicFont")); GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(myFont);
-
添加到西里尔字段:
请享用!
由于jasper报告v5,v6在pdf中显示字符的正确方法是使用font-extension
有关更多信息,请参阅stackoverflow上的以下问题:
Jasper Reports PDF不会导出西里尔文值
如何使用iReport在Jasperserver PDF中显示“$£Ω€απ⅔”?