使用Java API导出使用ireport designer 5.0.1创建的JasperReport时,报告始终为空。在报告中我设置了whenNoDataType =“AllSectionsNoDetail。同样使用新的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保存到磁盘。
答案 0 :(得分:0)
没关系。代码非常好。问题是我将暴露的响应保存为二进制Web服务附件。接下来,我将此输出复制到PDF文件。但是这样做会丢失一些二进制字符。
不幸的是,Adobe Reader并没有抱怨PDF格式不正确,只是显示一个空白的PDF。