乌克兰(西里尔文)字符未显示在贾斯珀报告 PDF 中
2022-09-04 08:38:27
我正在尝试将jasper报告中的乌克兰字符显示为pdf文件。但它没有以pdf格式播放。
当我将报告导出为所有其他格式时,如html,csv.。乌克兰字符正在显示。
我正在尝试将jasper报告中的乌克兰字符显示为pdf文件。但它没有以pdf格式播放。
当我将报告导出为所有其他格式时,如html,csv.。乌克兰字符正在显示。
在 iReport 中设置一些文本字段属性。使用字体 DejaVu Sans。将 pdf 编码设置为 Cp1251,并且 ispdf 嵌入为 true。
前任。:<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>
首先,请确保您具有正确的编码:
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应用程序中获取代码)