使用 Jaspersoft Studio 6.6.0,我创建了一个非常简单的报告,其中包含静态文本和红色矩形(以及我之前测试过的许多其他内容)。没有查询来获取数据,没有动态字段或任何东西。
当我尝试在网络应用程序中生成报告时,我遇到了问题。使用库版本 6.7.0。
像这样编码的 HTML 导出会产生一个空字符串
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params);
StringBuilder htmlStringBuilder = new StringBuilder();
HtmlExporter exporter = new HtmlExporter();
SimpleHtmlExporterConfiguration conf = new SimpleHtmlExporterConfiguration();
conf.setHtmlHeader("");
conf.setBetweenPagesHtml("");
conf.setHtmlFooter("");
conf.setFlushOutput(true);
exporter.setConfiguration(conf);
SimpleHtmlExporterOutput output = new SimpleHtmlExporterOutput(htmlStringBuilder);
exporter.setExporterOutput(output);
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.exportReport();
return htmlStringBuilder.toString(); // empty string
使用“导出为 PDF”创建单页 PDF 文件。该页是空白的。
JasperExportManager.exportReportToPdfFile(jasperPrint, "file.pdf");
我尝试使用 Studio 和 Java 代码来编译 JRXML 文件。结果还是一样。 JasperPrint 对象似乎已填充,但是页面上没有任何元素,我认为这是相关的。有机会找出原因吗?
最佳答案
我看到有两种选择:
在您的 Java 代码中导入
net.sf.jasperreports.engine.JREmptyDataSource
类并填充 jasperPrint,如下所示:JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());
这应该保证您的详细信息区域显示一次。这是 JasperSoft Studio 在您使用
一个空记录
数据适配器预览报表时使用的内容。例如,在 JasperSoft Studio 中,将所有内容从“详细信息”区域移至“摘要”区域,然后在“报告属性”选项卡中选择:
When No Data Type: All Sections No Detail
这样,当您不提供任何数据时,将渲染除详细信息带之外的所有其他带。
关于java - 使用 Java 代码报告显示为空白,在 Studio 中预览正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53587545/