JasperReport中如何为组最后一页设置Print When Expression?
解决方案
针对你遇到的多客户对账单空白页元素隐藏问题,提供两个可行的实现方案:
方案一:直接标记Detail 4节的打印状态
通过变量标记当前是否处于Detail 4节的打印流程,以此控制元素显示:
- 创建布尔型变量
isDetail4Active- 变量类型:
java.lang.Boolean - 重置类型:
Page - 初始值:
Boolean.FALSE
- 变量类型:
- 配置Detail 4节的事件表达式
- 在Detail 4节的Before Print事件中,设置表达式:
$V{isDetail4Active} = Boolean.TRUE - 在Detail 4节的After Print事件中,设置表达式:
$V{isDetail4Active} = Boolean.FALSE
- 在Detail 4节的Before Print事件中,设置表达式:
- 隐藏目标元素
给需要隐藏的水印、背景图、页眉页码设置Print When Expression:!$V{isDetail4Active}
方案二:通过组最后页码判断
利用组级变量捕获当前客户组的最后一页页码,精准控制元素显示:
- 创建整数型变量
currentGroupLastPage- 变量类型:
java.lang.Integer - 重置类型:
Group(选择你的客户分组,比如CustomerGroup) - 计算类型:
Last - 变量表达式:
$V{PAGE_NUMBER}
- 变量类型:
- 隐藏目标元素
给水印、背景图、页眉页码设置Print When Expression:$V{PAGE_NUMBER} != $V{currentGroupLastPage}
注意事项
- 确保变量的重置类型关联到正确的客户分组,避免跨组干扰
- 若Detail 4节仅在组总页数为奇数时打印,可结合组起始页变量
currentGroupFirstPage计算组总页数:$V{currentGroupLastPage} - $V{currentGroupFirstPage} + 1,验证奇偶性后再控制Detail 4的显示 - 测试时需覆盖组内分页的多种场景,确认变量取值准确
内容的提问来源于stack exchange,提问作者richardt3
相关产品推荐
相关产品推荐

