JasperReports:导出为PDF后,UTF-8中的某些符号丢失了

时间:2019-02-21 09:15:57

标签: java jasper-reports

我有一个导出到XLSX和PDF的报告。这两个导出器的代码非常相似,同时PDF导出过程中丢失了编码。

例如,在最终结果中仅跳过以下符号:“Č”,“ć”。同时正确打印“ü”,“ß”。

在XLSx导出器(工作部件)中,我使用了非常简单的代码:

try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
    JRXlsxExporter xlsExporter = new JRXlsxExporter();
    xlsExporter.setExporterInput(new SimpleExporterInput(jasperPrint));
    xlsExporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream));
    xlsExporter.exportReport();
    return outputStream.toByteArray();
}

在使用PDF的情况下,我使用了几乎相同的代码(无效):

try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
    JRPdfExporter exporter = new JRPdfExporter();
    exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
    exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream));
    exporter.exportReport();
    return outputStream.toByteArray();
}

但是它不起作用。在两种情况下,我都传递相同的jasperPrint实例。

我尝试使用PdfExporterConfiguration来设置一些参数,但是很遗憾,没有找到任何与编码相关的配置。

问:是什么原因引起的?知道如何解决吗?

1 个答案:

答案 0 :(得分:1)

我的怀疑是问题出在您使用的字体上。您确定XLSX和PDF都支持您在报告中设置的字体吗?在生成的PDF中,您可以通过右键单击并选择文档属性来检查使用的字体-有一个带有字体的选项卡。 PDF中的字体是否支持这些符号?

如果我记得正确的话,有时导出到PDF时,导出器将使用某些不同的字体(如果找不到/不支持所需的字体)。