何も含まれていないレポート ページを削除する必要があります。
空白を含むページがあるので、それを削除したいです。すべてを試しましたが、問題は解決しません。
私はこのコードを試しました:
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>