删除JasperReports生成的空白页:如何隐藏空子报表?

时间:2013-10-17 16:54:24

标签: java jasper-reports

我需要删除不包含任何内容的报告页面。

我有一个包含空格的页面,所以我想删除它。我尝试了一切,但问题仍然存在。

我试过这段代码:

private void removeBlankPage(List<JRPrintPage> pages) {

    for (Iterator<JRPrintPage> i = pages.iterator(); i.hasNext(); ) {
        JRPrintPage page = i.next();
        if (page.getElements().size() == 0)
            i.remove();
    }
}

但它永远不会到达if (page.getElements().size() == 0)因为元素存在而且它是空白的。(大小总是!= 0)

现在我正在尝试编写一个 Print When Expression 属性,所以我想检索前面的文本,如果它是一个空白,那么我确定该页面都是空白的,在这种情况下我不打印空白文本。所以空白页面消失了

但我无法检索前面的文字。

那你有什么建议?

这是父报告的jrxml:

<detail>
    <band height="802" splitType="Stretch">

        <subreport runToBottom="true">
            <reportElement uuid="14905216-11ed-48c5-aa9c-37a425b186d1" x="51" y="267" width="507" height="535"/>
            <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JRXmlDataSource) $P{REPORT_DATA_SOURCE}).subDataSource("//BODYR/BODYR_table/BODYR_line")]]></dataSourceExpression>
            <subreportExpression><![CDATA[$P{REPORT_PATH} + "BODYR.jasper"]]></subreportExpression>
        </subreport>
    </band>
</detail>

这是子报告:

<detail>
    <band height="22" splitType="Stretch">
        <textField pattern="" isBlankWhenNull="true">
            <reportElement uuid="79bfae52-ea0f-4f1f-a310-31464cb82f1e" stretchType="RelativeToBandHeight" mode="Transparent" x="0" y="0" width="555" height="22"/>
            <textElement>
                <font fontName="Arial" size="13"/>
            </textElement>
            <textFieldExpression><![CDATA[$F{LBODY}]]></textFieldExpression>
        </textField>
    </band>
</detail>

0 个答案:

没有答案