Jasper Report 中list实现横向打印 和 break组件多打印空白页的问题

26 3月

list 数据源实现横向打印

通常我们在做报表的时候,需要用到 list 组件来实现循环打印数组数据,但是往往都是默认竖着,一条一条地打印数据。

那我们想横着打印数据怎么办呢?我们想横着打印,直到宽度不够再换行可以吗?就像下面这样:

实现方案:

其实很简单

假设我们现在页面总宽度是300px,一行我们要放置3个数据的话。

  1. 放置一个 list 组件,宽度设置为 300 px,Layout 设置为 横向打印 Horizontal Layout
  2. 进入到 list 组件里面,放置一个 Frame,宽度设置为100px,设好边框(忽略间隔的padding,你自己可以调整)。注意,如果把Frame直接拖到 list 里面是无法改变大小的,一定要拖到 list 外面才行
  3.  list 组件的 单元宽度 cell width 一定要设置为 100px, 打印顺序为横向打印 Horizontal print

这样生成报表的时候,list 就会横向打印每个100px的数据,直到撑满300px就会换行啦!

Break组件 会导致多打印一行空白页的问题

有时候我们需要用到 break 组件,让一组数据打印完成后重新开启一个新页面继续打印。但是有时候我们会发现,用上了 break 组件它会在最后的一页多打出一整片空白的页面。

我最开始尝试了用条件打印的方式,让它在最后一页的时候就不用 break 组件,但是我发现根本不行,很难在 break 组件里面拿到总页面,因为无法用 master 模式打印,变量也不工作。

其实这主要是我们组件方式用错了!

首先 break 组件一定要放在最后一个 Detail Band 里。

假设这个 Detail Band 有300 px的高度,那么你就把 Detail Band 高度设置为 301 px!

然后将 break 组件放在最后,location 一定要贴紧上面一个组件和 Detail Band 底部,然后 Position Type 一定要固定在 top 就是Fix Relative To Top才行!

然后就好啦~

发表评论

电子邮件地址不会被公开。