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并下载相关推荐

  1. Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo

    Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...

  2. springboot项目整合阿里云oss的内容审核

    springboot项目整合阿里云 内容审核 第一 添加依赖 <dependency><groupId>com.aliyun</groupId><artifa ...

  3. Nginx安装配置与SpringBoot项目整合

    本篇文章将在上篇<Redis安装与SpringBoot项目整合详细教程>(上文链接:https://blog.csdn.net/sp958831205/article/details/88 ...

  4. springboot项目整合mybatis

    SpringBoot项目整合mybatis 本章内容 使用 idea创建 SpringBoot项目 SpringBoot项目中配制 mybatis 框架 1 创建 SpringBoot项目 1.1 在 ...

  5. Java springBoot项目整合海康威视摄像头抓拍车辆功能

    Java springBoot项目整合海康威视摄像头抓拍获取车辆信息功能 这篇文字写于去年的11月份,项目部署上去一段时间后,被反应有自动停止抓拍的BUG,我在代码中的解决办法是写了一个定时任务, 让 ...

  6. SpringBoot项目整合OpenFeign、实现动态IP+URL请求、自定义(编码器\解码器)

    SpringBoot项目整合OpenFeign 基础操作 pom依赖 配置application.yml 服务启动类 基础跨服务调用 动态IP+URL请求 + 动态编码器\解码器 自定义跨服务请求,E ...

  7. spring-boot项目整合obs服务器-华为云

    目录 前言 1.购买服务并从官网获得我们项目所需的配置参数 1-1.登录华为云 1-2.进入控制台 1-3.创建桶 ​ ​1-4.获取sk.ak 2.spring-boot项目集成OBS服务器 2-1 ...

  8. SpringBoot项目整合Retrofit最佳实践,这才是最优雅的HTTP客户端工具!

    作者:六点半起床 juejin.im/post/6854573211426750472 大家都知道okhttp是一款由square公司开源的java版本http客户端工具.实际上,square公司还开 ...

  9. RabbitMQ的6种工作模式的学习记录,普通MAVEN和springboot项目整合rabbitmq的API详解

    1.RabbitMQ后台管理页面 2.RabbitMQ 核心(自我理解) 3.RabbitMQ6种工作模式介绍 4. RabbitMQ的消息可靠性 5.RabbitMQ普通MAVEN项目使用 6.Sp ...

  10. springboot系列学习(十九):springboot项目整合Druid,Druid到底是什么,他是在项目中如何使用的

    目录 Druid是什么 先看一下之前的整合的jdbc使用的数据源是什么 创建一个springboot项目,导入Druid依赖 写一个Druid的配置类 yml文件和配置类绑定,这个之前就写过 解释以上 ...

最新文章

  1. 测试和恢复性的争论:面向对象vs.函数式编程
  2. sysbench 压测 mysql_sysbench压测
  3. ts连接mysql数据库_各种数据库的连接方法
  4. java鼠标进入高亮效果_鼠标选中文本划词高亮、再次选中划词取消高亮效果
  5. C# 操作FireBird 附源码
  6. HashMap vs ConcurrentHashMap — 示例及Iterator探秘
  7. 拦截Windows消息
  8. 自动化运维环境搭建过程
  9. [JS调用]automation服务器不能创建对象
  10. c访问excel 密码 api_管理EXCEL的5种服务使用渠道
  11. 跨域支持与返回json数据--mvc访问api接口
  12. 斐波那契数列与黄金分割比以及矩阵形式推导
  13. 双系统下Ubuntu安装教程
  14. 技术大会值得参加吗?
  15. 数据化、信息化、数字化和智能化之间联系和区别解析(建设收藏)
  16. 散落在香山的红绳情结
  17. 定时任务 未执行完不执行下一个任务
  18. android微信post提交表单,微信自带浏览器不支持form表单post提交方案解决
  19. MySQL必知必会(3)
  20. Freemark生成Word文件的加密处理

热门文章

  1. C语言生命游戏源代码
  2. vue项目中使用颜色选择器
  3. 量子电动力学和量子场论,多体系统的量子场论
  4. html5 调速 视频播放器,7款很棒的 HTML5 视频播放器
  5. android oppo 驱动,Android Studio无法连接OPPO
  6. 质点系的角动量与角动量定理
  7. 软件结构体系与设计模式--1.软件设计模式概述
  8. 【软件应用开发】小米便签APP维护开发
  9. win10运行Flink
  10. 豪迈HOMAG变频器维修E107544豪迈变频器维修09F5C3B