SpringBoot项目整合JasperReport报表生成PDF并下载
SpringBoot+layui项目整合JasperReport报表生成PDF并下载
- 一、JasperReport是什么?
- 二、生成步骤
- 1.前端部分
- 2.后端部分
- 2.1引入依赖
- 2.2Controller层
- 2.3Service层
- 3.模板部分
一、JasperReport是什么?
JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。
二、生成步骤
1.前端部分
var confirmPay = function (obj) {var link = document.createElement('a');link.href = 'sincardtempfee/query/export?prtseq='+obj.prtseq+'&agentcode='+obj.agentcode+';link.click();
};
2.后端部分
2.1引入依赖
代码如下:
<!-- jasperreports begin --><dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports</artifactId><version>6.12.2</version><exclusions><exclusion><groupId>com.lowagie</groupId><artifactId>itext</artifactId></exclusion><exclusion><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></exclusion><exclusion><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId></exclusion><exclusion><artifactId>commons-beanutils</artifactId><groupId>commons-beanutils</groupId></exclusion><exclusion><artifactId>commons-collections</artifactId><groupId>commons-collections</groupId></exclusion><exclusion><artifactId>commons-logging</artifactId><groupId>commons-logging</groupId></exclusion></exclusions></dependency><dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version></dependency><dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><version>2.4.11</version></dependency><dependency><groupId>net.sf.jasperreports</groupId><artifactId>fonts</artifactId><version>1</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/fonts.jar</systemPath></dependency><dependency><groupId>net.sf.jasperreports</groupId><artifactId>wmsyou</artifactId><version>1</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/wmsyou.jar</systemPath></dependency><dependency><groupId>org.springblade.wms</groupId><artifactId>taobao-sdk-java-auto</artifactId><version>1</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/taobao-sdk-java-auto_1608103519290-20211110.jar</systemPath></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-pdfa</artifactId><version>5.5.0</version></dependency><!-- jasperreports end -->
2.2Controller层
@GetMapping(value = "/export", produces = "application/json")@ResponseBodypublic void export(HttpServletResponse response, SinCardTempFeeQueryVO sinCardTempFeeQueryVO) {log.info("收据打印开始startPrint()");response.setHeader("content-disposition","attachment;fileName="+"ReceiptPrinter.pdf");sinCardTempFee.receiptPrinter(response,sinCardTempFeeQueryVO);}
2.3Service层
package com.lotso.web.module.KDFinfeeSure.service.impl;import com.lotso.web.module.KDFinfeeSure.service.SinCardTempFeeService;
import com.lotso.web.module.KDFinfeeSure.vo.SinCardTempFeeQueryVO;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.export.SimpleExporterInput;
import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;@Service
@Slf4j
public class SinCardTempFeeImpl implements SinCardTempFeeService {@SneakyThrowspublic void receiptPrinter(HttpServletResponse response,SinCardTempFeeQueryVO asinCardTempFeeQueryVO) {log.info("start print!");String jrxmlPath = Thread.currentThread().getContextClassLoader().getResource("templates/pdf/KDDLR_Receipt_Printer.jrxml").getPath();log.info("收据打印模板路径jrxmlPath:"+jrxmlPath);String jasperPath = Thread.currentThread().getContextClassLoader().getResource("templates/pdf/KDDLR_Receipt_Printer.jasper").getPath();log.info("收据打印模板路径jasperPath:"+jasperPath);JasperCompileManager.compileReportToFile(jrxmlPath);// 构造数据Map paramters = new HashMap();paramters.put("prtseq",asinCardTempFeeQueryVO.getPrtseq());paramters.put("agentcode",asinCardTempFeeQueryVO.getAgentcode());paramters.put("agentname",asinCardTempFeeQueryVO.getAgentname());paramters.put("kdstartno",asinCardTempFeeQueryVO.getKdstartno());paramters.put("kdendno",asinCardTempFeeQueryVO.getKdendno());paramters.put("oldprtseq",asinCardTempFeeQueryVO.getOldprtseq());paramters.put("reqcom",asinCardTempFeeQueryVO.getReqcom());String logoPath = Thread.currentThread().getContextClassLoader().getResource("static/global/img/DWRSLOG.png").getPath();log.info("模板log路径"+logoPath);paramters.put("logo",logoPath);//打印列表List<JasperPrint> reportlist = new ArrayList();//填充数据---使用JavaBean数据源方式填充JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath,paramters,new JREmptyDataSource());reportlist.add(jasperPrint);//打印export(response, reportlist);}//打印public void export (HttpServletResponse response, List<JasperPrint> reportlist){log.info("准备输出pdf流,数量:{}", reportlist == null ? 0 : reportlist.size());//输出pdf文件response.setContentType("application/pdf");JRPdfExporter exporter = new JRPdfExporter();if (CollectionUtils.isEmpty(reportlist)) {return;}try {exporter.setExporterInput(SimpleExporterInput.getInstance(reportlist));exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));exporter.exportReport();} catch (Exception e) {log.error("异常:{",e.getMessage()+e.getCause()+"}");log.info("打印输出流失败");}}}
3.模板部分
采用TIBCO Jasperreport Studio绘制模板
开始绘制模板
将绘制好的模板引入至项目中,放在项目resources下
SpringBoot项目整合JasperReport报表生成PDF并下载相关推荐
- Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...
- springboot项目整合阿里云oss的内容审核
springboot项目整合阿里云 内容审核 第一 添加依赖 <dependency><groupId>com.aliyun</groupId><artifa ...
- Nginx安装配置与SpringBoot项目整合
本篇文章将在上篇<Redis安装与SpringBoot项目整合详细教程>(上文链接:https://blog.csdn.net/sp958831205/article/details/88 ...
- springboot项目整合mybatis
SpringBoot项目整合mybatis 本章内容 使用 idea创建 SpringBoot项目 SpringBoot项目中配制 mybatis 框架 1 创建 SpringBoot项目 1.1 在 ...
- Java springBoot项目整合海康威视摄像头抓拍车辆功能
Java springBoot项目整合海康威视摄像头抓拍获取车辆信息功能 这篇文字写于去年的11月份,项目部署上去一段时间后,被反应有自动停止抓拍的BUG,我在代码中的解决办法是写了一个定时任务, 让 ...
- SpringBoot项目整合OpenFeign、实现动态IP+URL请求、自定义(编码器\解码器)
SpringBoot项目整合OpenFeign 基础操作 pom依赖 配置application.yml 服务启动类 基础跨服务调用 动态IP+URL请求 + 动态编码器\解码器 自定义跨服务请求,E ...
- spring-boot项目整合obs服务器-华为云
目录 前言 1.购买服务并从官网获得我们项目所需的配置参数 1-1.登录华为云 1-2.进入控制台 1-3.创建桶 1-4.获取sk.ak 2.spring-boot项目集成OBS服务器 2-1 ...
- SpringBoot项目整合Retrofit最佳实践,这才是最优雅的HTTP客户端工具!
作者:六点半起床 juejin.im/post/6854573211426750472 大家都知道okhttp是一款由square公司开源的java版本http客户端工具.实际上,square公司还开 ...
- RabbitMQ的6种工作模式的学习记录,普通MAVEN和springboot项目整合rabbitmq的API详解
1.RabbitMQ后台管理页面 2.RabbitMQ 核心(自我理解) 3.RabbitMQ6种工作模式介绍 4. RabbitMQ的消息可靠性 5.RabbitMQ普通MAVEN项目使用 6.Sp ...
- springboot系列学习(十九):springboot项目整合Druid,Druid到底是什么,他是在项目中如何使用的
目录 Druid是什么 先看一下之前的整合的jdbc使用的数据源是什么 创建一个springboot项目,导入Druid依赖 写一个Druid的配置类 yml文件和配置类绑定,这个之前就写过 解释以上 ...
最新文章
- 测试和恢复性的争论:面向对象vs.函数式编程
- sysbench 压测 mysql_sysbench压测
- ts连接mysql数据库_各种数据库的连接方法
- java鼠标进入高亮效果_鼠标选中文本划词高亮、再次选中划词取消高亮效果
- C# 操作FireBird 附源码
- HashMap vs ConcurrentHashMap — 示例及Iterator探秘
- 拦截Windows消息
- 自动化运维环境搭建过程
- [JS调用]automation服务器不能创建对象
- c访问excel 密码 api_管理EXCEL的5种服务使用渠道
- 跨域支持与返回json数据--mvc访问api接口
- 斐波那契数列与黄金分割比以及矩阵形式推导
- 双系统下Ubuntu安装教程
- 技术大会值得参加吗?
- 数据化、信息化、数字化和智能化之间联系和区别解析(建设收藏)
- 散落在香山的红绳情结
- 定时任务 未执行完不执行下一个任务
- android微信post提交表单,微信自带浏览器不支持form表单post提交方案解决
- MySQL必知必会(3)
- Freemark生成Word文件的加密处理