我试图在jasper报告中将ukranian字符显示为pdf文件。但它不是以pdf格式显示。
当我将报告导出到所有其他格式(如html)时,显示csv..ukranian char。
答案 0 :(得分:9)
在iReport上设置一些文本字段属性。使用字体 DejaVu Sans 。将pdf编码设置为 Cp1251 ,将 isPdfEmbedded 设置为 true 。
例:<font fontName="DejaVu Sans" isStrikeThrough="false" pdfEncoding="Cp1251" isPdfEmbedded="true" />
jasperreports字体作为maven依赖:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
</dependency>
答案 1 :(得分:8)
首先,确保您拥有正确的编码:
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());
当然,先决条件是:
应该这样做(我正在从一个有效的cyrilic应用程序中获取代码)
答案 2 :(得分:2)
在JVM中注册字体
Font myFont = Font.createFont(Font.TRUETYPE_FONT, new File("pathToCyrillicFont"));
GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(myFont);
加入西里尔字母:
<textElement>
<font
fontName="fontName"
pdfFontName="pathToCyrillicFont"
size="13"
isBold="false"
isItalic="false"
isUnderline="false"
isPdfEmbedded ="true"
pdfEncoding ="Cp1251"
isStrikeThrough="false"
/>
</textElement>
享受!
答案 3 :(得分:2)
由于jasper报告v5,v6在pdf中显示字符的正确方法是使用font-extension
有关更多信息,请参阅stackoverflow上的以下问题:
Jasper Reports PDF doesn't export cyrillic values
How can I display "$£Ω€απ⅔" in Jasperserver PDF using iReport?