我们正在构建一个基于 JasperReports 的动态报表设计器。在大多数情况下,我们使用PDF作为默认输出。
我们正面临一个严重的问题,例如,如果用户在报告中选择了八列,则可能是打印报告的唯一方法是在第一页上显示前4列详细信息和标题最后4列详细信息和标题显示在第二页上。
看起来像分栏符是这样做的方式,我在Jasper Reports中尝试过它们,但没有运气。下面我在jrxml文件中添加了详细信息区域,我试图在第三列之后使用break元素中断到新页面。我尝试在第四列之前使用printbreak上的printWhenExpression进行分解。
请注意,虽然此测试用例很小且实际上并不需要中断,但正在创建的其他报告中有20多列需要分布在3个或更多页面上。
<detail>
<band height="16" splitType="Stretch">
<textField isBlankWhenNull="true">
<reportElement x="24" y="1" width="100" height="15" uuid="4bb1d713-2c34-42e9-aeb4-63aa41d10060"/>
<textFieldExpression><![CDATA[$F{L_BUILDING_CODE}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="140" y="1" width="100" height="15" uuid="9d55a9e3-fa9f-497b-b744-dd853ac21a4a"/>
<textFieldExpression><![CDATA[$F{L_BUILDING_NAME}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="250" y="1" width="100" height="15" uuid="e70b4bc4-a8a7-4e97-abdc-e58346daa002"/>
<textFieldExpression><![CDATA[$F{L_CITY}]]></textFieldExpression>
</textField>
<break type="Column">
<reportElement key="" x="0" y="1" width="250" height="1" uuid="3bf6f2c0-a0d6-43dd-9d3f-ddd1e46d5fc7" >
<printWhenExpression><![CDATA[$V{COLUMN_NUMBER}.intValue() == 4]]></printWhenExpression>
</reportElement>
</break>
<textField>
<reportElement x="600" y="1" width="100" height="15" uuid="19cb12e8-6474-4776-a9fa-2c7d34e69573"/>
<textFieldExpression><![CDATA[$F{L_STATE_PROVINCE}]]></textFieldExpression>
</textField>
</band>
</detail>
&#13;