Jasper Report&Jaspersoft Studio 6 使用详细教程

介绍:Jaspersoft Studio 6 是一款编写pdf的工具软件,用于后端动态数据生成PDF,根据标签绑定来实现数据生成PDF!

下载Jaspersoft Studio 6

链接:https://pan.baidu.com/s/1mgkRC5qnz74k8AwdOMZqYQ 
提取码:cwqb

官网下载:Download Jaspersoft - Jaspersoft Community

安装:下一步!下一步!下一步!

使用教程:

  一,创建项目:

1.步骤: File -> New -> Project->JasperReportsProject

2.选择纸张样式,这里选的是空白竖向的A4纸

3,可以看到这里分了很多区来进行编辑,可能会影响我们的操作,先删掉一部分,删除区域也不会影响最后打印出来的样式

删除之后

二,了解工具栏,以及变量定义

        Static  Text 静态文本        Text  FieId    动态文本(关联我们数据的字段名称)

        Barcode 条形码,二维码,静态文本,也可以关联字段

        List    集合数据(可以通过关联集合的数据自动进行循环展示),会自动增加页数

 

  Static  Text 静态文本 使用可以直接拖拽右侧工具栏 ,双击可以修改文本。

 Text  FieId    动态文本 使用直接拖拽的话会导致属性值映射不到的情况

在左下侧这里看清自己要在那个文件中新建变量

在Parameters中右键 选择 Create Parameter

 Name对应数据的字段名,Class 数据类型,Description 备注,

数据类型一定要和程序中的数据类型对应,如果没有需要的类型,在代码中将数据转成String类型的或者已有类型的。

添加完变量类型的可以从左侧直接拖拽至需要放置的地方

 二维码也可以直接拖拽过来,然后,在右下侧绑定一个变量就可以了

 

 三,List 变量的动态有点复杂,记住刚刚创建变量的步骤

 右键文件 Create Dataset 新建一个数据集合

 

 修改名字为数据集合的名字,因为我这里的数据类型是 Entity 其中有一个字段是List<Entity>

这个list的名字就改为那个List<entity>的字段名称

 

 然后在这个list集合中 新建 FieIds 需要注意!list中不在是新建Parameters了

 定义好要遍历的字段,以及对应的字段类型

 创建完list之后还需要再外层在创建一个 和list集合同名的字段 

这个字段的类型为net.sf.jasperreports.engine.data.JRBeanCollectionDataSource 一定要是这个类型的

调试样式

 设置边框

 文本框位置,以及宽高

 文本框内字体样式

 距离我们动态pdf文件还差最后一步了

        1,将所有数据转成json类型的,一定要转一次,list中的数据也要转换!

这里用的是 JSONObject.parseObject(JSONObject.toJSONString(plan));方法转换的

此方法用来将数据和PDF合并的,param为数据,liuzhuanka 是我们刚刚创建jrxml的文件地址
JasperUtils.exportPdf(liuzhuanka, response.getOutputStream(), param, new JREmptyDataSource());
 public void print(ProWorkOrderDTO search, HttpServletResponse response) {
        Map<String, Object> param = new HashMap<String, Object>();
        if (StringUtils.isNotEmpty(search.getSohnum()) && Objects.nonNull(search.getSoplin())){
            List<PrintWorkOrderVO> workVo =  proWorkOrderMapper.selectPrintList(search);
            if (workVo.size() != 0 ){

                PrintPlanVO plan =  proWorkOrderMapper.selectPlanTop(workVo.get(0));
                plan.setOptName(SecureUtil.getUserName());

                Date date = new Date();
                SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd");
                String format = dateFormat.format(date);
                plan.setOptAt(format);
                param = JSONObject.parseObject(JSONObject.toJSONString(plan));
            }

            try {
                List<Map<String, Object>> proMaps = new ArrayList<>();
                workVo.forEach(item -> proMaps.add(JSONObject.parseObject(JSONObject.toJSONString(item))));
                JRDataSource printList = new JRBeanCollectionDataSource(proMaps, false);
                param.put("workOrderVOS", printList);
                System.out.println(">>>>>>>>>>>"+param);
                JasperUtils.exportPdf(liuzhuanka, response.getOutputStream(), param, new JREmptyDataSource());
            } catch (JRException | IOException e) {
                e.printStackTrace();
            }
        }



    }

成果展示:

  • 25
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值