TIBCO Jaspersoft 使用教程+JasperReport 生成PDF记录

一、前言

关于上一篇文章,PDF生成确实能完成,但是项目上使用后,觉得代码量太繁琐,编写模板时样式问题事在头大,因此跟换技术,方便开发。

二、参考文献

说事在的,网上关于这些东西事在太少,找了很多资料,都说了写无关紧要的东西;
虽然我写出来了,但也只是暂时够用,后期遇到比较蛮烦的PDF,还是需要继续专研。
参考地址:又两个大佬博主写的很详细,我在这就不过多介绍了,下面附上连接,大家去看看(博主别责怪)
地之一:https://blog.csdn.net/shiyun123zw/article/category/7422282
地址二:https://blog.csdn.net/pigdreams/column/info/15303
这里的地址有软件的一些项目结构,元素介绍和模板显示区域的介绍https://www.cnblogs.com/max-hou/p/11982035.html

三、官网下载

首先需要到官网下载 Jaspersoft Studio 软件,和 JasperReport Library 这个文件
在这里插入图片描述
Jaspersoft:这是基于Eclipse软件开发的图形化报表设计工具。
JasperReport Library: JasperReports开源报告引擎,这里后期我们可以用它来打包中文字体使用。

四、下面正式开始 关于Column Footer问题

基本的我就不过多介绍,上面提供的两个博客中都有,记录下我碰到的问题
在这里插入图片描述

这里是我一个个拼接出来的模板,当我们点击Preview时就会碰到一个很严重的问题,Column Footer的问题就出现了,它一搬默认回再A4纸最下面生成

这样看起来就和我们本身预想的就不一样,需要将其合并起来,达到这种效果
在这里插入图片描述

这时候我们就需要将模板样式打开
在这里插入图片描述
搜索半天,最后还是自己摸索出来,原来这么简单!!

JAVA代码

当我们模板生成好的时候,需要将模板编译下
在这里插入图片描述
<这里代码是和前端交互,存放在response流里,如果要存在本地,自行修改下。

public static <T> void runReportToPdf(Map<String, Object> mapParams, List<T> listParams, String jasperPath, HttpServletResponse response, String Name) throws IOException {
        ServletOutputStream out = null;
        try {
            out = response.getOutputStream();
            response.setContentType("application/pdf");
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-Disposition", "inline;fileName=XXXX.pdf" + Name + ".pdf");
            //新建ClassPathResource
            ClassPathResource classPathResource = new ClassPathResource(jasperPath);
            //获取对象流
            InputStream inputStream = classPathResource.getInputStream();
            //load流
            JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream);
            //获取JRDataSource
            JRDataSource jrBeanCollectionDataSource = new JRBeanCollectionDataSource(listParams);
            byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, mapParams, jrBeanCollectionDataSource);
            out.write(bytes);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            out.flush();
        }
    }
JasperPrinterUtils.runReportToPdf(map,detailList,"/reports/outOrderPdf.jasper",response,"转出单据");

调取方法需要传入的参数,路径根据自己项目配置和目录结构来存放,最后的中文是生成的名字
其中map是对应模板中 Parameters 中的字段
detailList是对应 Fields 的字段
map是对应模板中Parameters 中的字段在这里插入图片描述

五、总结

模板是一点点拼接出来的,当我们需要的模板中有表头,数据时,我们的数据是循环的,表头只想每页开始时显示时,只需要把模板中Column HeaderDetail选中就行,我们的表格根据自己的样式来放入就行。上面附上的连接一定要看,很详细!

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值