有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JasperReports:UTF8中的一些符号在导出为PDF后丢失

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

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

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

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设置一些参数,但不幸的是,没有找到任何与编码相关的配置

Q:什么可能导致问题?知道怎么修吗


共 (1) 个答案

  1. # 1 楼答案

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

    如果我没有记错的话,有时导出到PDF时,导出器会使用一些不同的字体(如果找不到/不支持您想要的字体或其他字体)