使用 JasperReports 子报表后的空白页

Blank Pages After Subreport Using JasperReports

我构建了一个报告模板;它使用 headers 和页脚的基础报告,然后是可以注入报告的子报告。一般来说,这很好用;但是我注意到子报表在主报表中完成生成后有空白页。

我想这只是由于分页时主报表模板和子报表不在同一页上造成的;例如,我正在测试的子报表使用其自己的数据源并进行了分组。

有没有办法去掉无关的页面?我的主报告模板设置了以下 属性(无用):

When No Data Type: No Pages

子报表具有相同的设置。

我在这里找到了一个有用的 post: JasperReports: How to remove new page blank in subreport

这建议将以下参数添加到实际 subreportreportElement 标记中:

isRemoveLineWhenBlank="true"

这样做实际上删除了所有内容,只留下了一个额外的空白页;这是一个巨大的成功。但是,还是留了一页空白。

这是更改后源的样子:

<subreport overflowType="Stretch">
    <reportElement x="-20" y="0" width="792" height="20" isRemoveLineWhenBlank="true" uuid="e6d4ec67-6ce6-4bbb-b40b-edfb1cfb4722">

由于问题的一般性质;特别是在阐明标题中的问题时,我发现很难找到与该主题相关的文章。如果有任何相关的 pages/blog posts/articles,将不胜感激。

如果您使用 Java 生成报告,您可以删除最后一个空白页作为解决方法。

JasperPrint jp = JasperFillManager.fillReport(report, params, dataSource);
for (Iterator<JRPrintPage> iterator = jp.getPages().iterator(); iterator.hasNext();) {
     JRPrintPage page = iterator.next();
     if (!iterator.hasNext() && page.getElements().isEmpty()) {
          iterator.remove();
     }
 }