iReport 二维码列表循环打印

总体思路就是先生成二维码的图片,然后再把二维码的图片信息传递给iReport的图片组件让其显示出来。

1、新建模板

2、在Detail模块放置一个list组件,list组件下放置一个image组件及text field组件

3、 这时候就会自动生成一个dataset1(或者别的名字)这个就是list组件的数据源

4、我们先在模板Parameters这右键新建一个变量dataList,这个就是我们传递给模板数据源的变量名,因为我们传递的是一个列表,所以变量名的类名选java.util.Collection

5、有了列表的变量,那列表中每一行都还有不同的字段显示值,这时候我们需要在dataset1中定义我们每一行都有哪些字段值

6、在dataset1的Fields中定义我们每一行的字段名叫什么,这里我们定义两个字段,一个字段叫barcodeImageStr(用来放置经过base64编码的图片信息)一个叫barcodeStr(用来放置二维码的一些辅助信息),两个都是string类型

7、接下来我们绑定下这写信息到我们的列表list组件中,右键Detail 1中的list组件,选择【Edit list datasource】,弹出来的窗口这我们确认下【Sub dataset】是不是选中了我们前面配置了行详情的数据集dataset1,然后选择【Connection/Datasource exp】编辑绑定我们的变量,因为我们这是一个列表,所以我们要选【JRBeanCollectionDataSource】默认是写这个【new net.sf.jasperreports.engine.JREmptyDataSource(1)】这我们需要修改成new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{dataList})

//注意不是JREmptyDataSource  而是JRBeanCollectionDataSource
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{dataList})

其中$P{dataList}就是我们前面设置的列表变量名,你可用在括号里面定位光标,然后在下面的Parameters中找到这个变量,双击该变量就会自动把变量填写到上面

8、数据源绑定后我们修改image组件及text field组件绑定的字段名,因为我们选择的是先生成二维码图片,然后再把图片信息传递给模板,让模板展示出二维码信息,所以这里我们需要再image组件这的【Image Expression】这输入赋值的表达式【new ByteArrayInputStream(com.sun.org.apache.xerces.internal.impl.dv.util.Base64.decode($F{barcodeImageStr}))】然后在下面的【Expression Class】这选择【java.io.InputStream】,因为二维码下面的文字就普通的字符串信息,所以我们就设置为string类型就好了

new ByteArrayInputStream(com.sun.org.apache.xerces.internal.impl.dv.util.Base64.decode($F{barcodeImageStr}))

9、传入数据预览即可得到如下图所示内容

注意: 传递图片信息的时候忽略前面的【data:image/png;base64,】

不需要指明图片类型等信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值