我有一个导出到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
来设置一些参数,但是很遗憾,没有找到任何与编码相关的配置。
问:是什么原因引起的?知道如何解决吗?
答案 0 :(得分:1)
我的怀疑是问题出在您使用的字体上。您确定XLSX和PDF都支持您在报告中设置的字体吗?在生成的PDF中,您可以通过右键单击并选择文档属性来检查使用的字体-有一个带有字体的选项卡。 PDF中的字体是否支持这些符号?
如果我记得正确的话,有时导出到PDF时,导出器将使用某些不同的字体(如果找不到/不支持所需的字体)。