You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jasper Report页面末尾空白处填充*符号 消除页面留白

JasperReport 页面末尾空白填充星号实现方案

最终实现效果如下:
实现示例

核心实现逻辑

利用JasperReport的带区拉伸特性和动态文本截断能力,适配内容行自动高度的场景,不需要提前计算内容高度,可自动填满最后一页末尾的空白区域。


实现步骤

1. 新增填充带区

  • 在报表最后一个内容带区(通常为Detail带区、Summary带区之后)新增一个自定义带区,带区高度设置为1px,Stretch Type属性设置为Relative to Page Height,Position Type设置为Float,保证带区可以自动延伸到页面底部。
  • 若仅需要在最后一页填充星号,给该带区添加Print When Expression:$V{PAGE_NUMBER} == $V{PAGE_COUNT},避免所有页面都生成填充效果。

2. 添加填充文本框

  • 在刚才新增的填充带区中插入一个文本框,宽度与页面内容宽度一致,文本框属性设置:
    • Stretch With Overflow:true
    • Stretch Type:Relative to Band Height
  • 文本框内容表达式按以下两种方式二选一即可:

    方式1:依赖commons-lang包(更灵活)

    先在报表的导入配置中添加导入:
    import org.apache.commons.lang3.StringUtils;
    文本表达式写为:
    StringUtils.repeat("*", 5000)
    数字可根据最大页面空白长度调整,只要保证总长度超过最大可能的空白区域即可,超出带区的部分会自动被截断。

    方式2:无依赖实现

    手动拼接足够长的星号字符串即可:
    "****************************************************************************************************" +
    "****************************************************************************************************" +
    "****************************************************************************************************" +
    "****************************************************************************************************"
    
    同样保证总长度足够覆盖最大空白区域即可。

3. 适配自动行高配置

  • 所有内容行所在的Detail带区全部设置Position Type为Float,保证内容行自动撑开高度时,后续的填充带区会自动下移,不会和内容重叠。
  • 检查页面边距配置,确保填充带区的宽度和内容区域宽度一致,避免星号超出页面或者左右留白不均。

内容的提问来源于stack exchange,提问作者Felipe Ortmeyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:24:04