我需要删除不包含任何内容的报告页面。
我有一个包含空格的页面,所以我想删除它。我尝试了一切,但问题仍然存在。
我试过这段代码:
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>