0

使用 Java API 导出使用 ireport Designer 5.0.1 创建的 JasperReport 时,报表始终为空。在我设置 whenNoDataType="AllSectionsNoDetail. 的报告中。也使用 new JREmptyDataSource() 也不起作用。

此外,当我使用 JRRtfExporter 导出为 RTF 时,结果也很好。ireport 中的 PDF 预览也正确。

InputStream inputStream = this.getClass().getResourceAsStream("/test-report.jasper");
ByteArrayOutputStream out = new ByteArrayOutputStream();
JasperPrint jPrint = JasperFillManager.fillReport(inputStream, new HashMap<String, Object>(), new JRXmlDataSource(new ByteArrayInputStream("<root><name>John Doe</name</root>".getBytes("UTF-8")), "/root"));

JRPdfExporter reportExporter = new JRPdfExporter();//JRRtfExporter(); does works fine
reportExporter.setParameter(JRExporterParameter.JASPER_PRINT, jPrint);
reportExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
reportExporter.exportReport();
out.close();
reportBytes = out.toByteArray();

reportBytes 保存到磁盘。

4

1 回答 1

0

没关系。代码非常好。问题是我将公开的响应保存为二进制 Web 服务附件。接下来,我将此输出复制到 PDF 文件中。但是这样做会丢失一些二进制字符。

不幸的是,Adobe Reader 不会抱怨 PDF 格式不正确,它只是显示一个空白 PDF。

于 2013-03-28T08:27:40.577 回答