ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法

  1. 问题:我们在使用table组件输出多条记录,发现如果某条记录的内容过多时,生成的报告中间几页,剩余部分区域会出现空白的问题,空白不均匀,有的页显示一小部分内容,剩下大部分空间都是空白,有的显示一大部分内容,剩下一小部分空间显示空白,如图所示:

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法
  2. 原因:去官方社区查询问题,发现ireport本身机制就是这样,当下一元素内容超出当前页剩余空间,则重新创建一个新的页面去渲染内容,而当前页剩余的空间不管多少都留白
  3. 解决:在这里吐槽一下,这很不合理,官方的意思是不这样做,会出现内容渲染错乱问题,好吧,那既然这样就、是不是就没办法了,当然不是,办法总比困难多嘛,经过各种尝试,发现ireport里面有一个List控件也可以循环打印数据,和table类似,但是这还是不够的,还需要配合手动创建分组group,加上Rectangle控件来解决问题
  4. 第一步:创建一个分组group

    ,ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法
     
  5. 第二步:在分组区域加入Rectangle控件,并且调整好大小,设置属性Position Type为Float,Stretch Type为Relative to Band Height,并且勾上Print Repeated Values,Print When Detail OverFlows

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法
     
  6. 第三步:在Rectangle控件上加入List组件,并且设置属性,配置数据源和dataset

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法
     
  7. 从dataSet Fields中将要打印的字段拖到List控件中,并配置字段属性,将group,Rectangle,List空间宽高设置成一样重叠在一起

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法
  8. 设置两个字段的边框,注意必须按照这种设置方式,否则当内容超出当前页剩余空间,内容多的那个字段边框和内容少的字段边框高度不统一,这就为什么要用Rectangle来作为表格外部边框的原因,从视觉上看起来不会觉得有问题

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法
    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法

     
  9. 最后看下输出结果,完美解决问题

    ireport table中元素内容超出纸张剩余空间,导致出现空白页问题的解决方法