SpringBoot(十六)_springboot整合JasperReport6.6.0

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 现在项目上要求实现套打,结果公司里有个人建议用JaperReport进行实现,就进入这个东西的坑中。好歹经过挣扎现在已经脱离此坑中。现在我也是仅能实现读取数据库数据转成pdf进行展示,包括中文的展示。

现在项目上要求实现套打,结果公司里有个人建议用JaperReport进行实现,就进入这个东西的坑中。好歹经过挣扎现在已经脱离此坑中。现在我也是仅能实现读取数据库数据转成pdf进行展示,包括中文的展示。于是记录下整个过程。

1.下载 安装 Jaspersoft Studio

下载地址:https://community.jaspersoft.com/community-download

我下载的就是6.6.0这个版本,Jasper Report 分为专业版(收费)和社区版(免费),这里下载的社区版本。

2.设计模板

对这个模板设计我也不是很熟悉,这里我就不展开说明了。大家自行设计吧

2.1 导入并设置字体

这里需要注意一点就是,这个设计出的不显示中文,需要导入字体。

点击window->Preferences->jaspersoft Studio->font->add

设置完成后,点击Finish.

2.2 设计模板选择设置的myfont字体

查看jrxml文件后,设置后会多出font标签

                <font fontName="myfont" size="26" pdfFontName="" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
                </textElement>
                <text><![CDATA[三年二班学生信息]]></text>

2.3 导出myfont字体jar包

点击window->Preferences->jaspersoft Studio->font

选择myfont 点击export 导出。这里我保存为kevin.jar

2.4 将kevin.jar 安装到本地maven库

mvn install:install-file -Dfile=kevin.jar -DgroupId=com.kevin -DartifactId=myfont -Dversion=1.0.0 -Dpackaging=jar

至此,前期的准备工作都已经完成。

3.构建springboot项目

这里我使用的版本是 2.1.1.RELEASE

3.1 pom文件

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.6.0</version>
        </dependency>
        <dependency>
            <groupId>com.kevin</groupId>
            <artifactId>myfont</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>

注意 ,我这里引用的是我设置的com.kevin.myfont版本,个人根据自己步骤2.4设置的情况进行修改

3.2 application.yml

# Server settings
server:
  port: 8080

# SPRING PROFILES
spring:
  http:
    encoding.charset: UTF-8
    encoding.enable: true
    encoding.force: true
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/kevin?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

3.3 ReportController 代码

@RestController
public class ReportController {

    @Resource
    private DataSource dataSource;


    /**
     * 转换为pdf展示
     *
     * @param reportName
     * @param parameters
     * @param response
     * @throws SQLException
     * @throws ClassNotFoundException
     * @throws JRException
     * @throws IOException
     */
    @GetMapping("/{reportName}")
    public void getReportByParam(
            @PathVariable("reportName") final String reportName,
            @RequestParam(required = false) Map<String, Object> parameters,
            HttpServletResponse response) throws SQLException, ClassNotFoundException, JRException, IOException {

        parameters = parameters == null ? new HashMap<>() : parameters;
        //获取文件流
        ClassPathResource resource = new ClassPathResource("jaspers" + File.separator + reportName + ".jasper");
        InputStream jasperStream = resource.getInputStream();

        JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource.getConnection());
        // JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, new JREmptyDataSource());
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "inline;");
        final OutputStream outputStream = response.getOutputStream();
        JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
    }
}

3.4 完整目录结构

4.运行效果

启动项目,运行http://localhost:8080/demo

完整代码

github:https://github.com/runzhenghengbin/SpringBoot

玩的开心!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
XML 开发框架 Java
【SpringBoot】什么是SpringBoot?简析SpringBoot
【SpringBoot】什么是SpringBoot?简析SpringBoot
16 1
|
SQL 监控 druid
《springboot实战》第八章 springboot 整合Druid
《springboot实战》第八章 springboot 整合Druid
179 1
|
12月前
|
Java Maven
springboot使用freemarker的入门Demo
1.创建一个maven web项目 2.添加所需要的依赖
|
编解码 安全 Java
【笑小枫的SpringBoot系列】【十六】SpringBoot生成PDF
【笑小枫的SpringBoot系列】【十六】SpringBoot生成PDF
152 0
|
运维 NoSQL Java
【笑小枫的SpringBoot系列】【十八】SpringBoot中的Properties配置
【笑小枫的SpringBoot系列】【十八】SpringBoot中的Properties配置
92 0
|
存储 Java 测试技术
【笑小枫的SpringBoot系列】【十七】SpringBoot文件上传下载
【笑小枫的SpringBoot系列】【十七】SpringBoot文件上传下载
88 0
|
NoSQL Java Maven
【笑小枫的SpringBoot系列】【一】SpringBoot项目创建
【笑小枫的SpringBoot系列】【一】SpringBoot项目创建
85 0
|
XML SQL Java
SpringBoot2.x系列教程06--SpringBoot中结合XML文件实现SSM整合
前言 前面几篇文章中,壹哥 主要是带各位简单的认识一下SpringBoot,算是做了个开场白,接下来才是咱们学习SpringBoot的重点。所以从本篇文章开始,咱们逐步进入到更实用的学习上来,前面的配置只是为了让我们使用SpringBoot的时候更简单舒服一点。 接下来我们就看看在SpringBoot到底该怎么实现SSM整合吧。 一. 添加核心配置 1. SSM整合简介 在学习SpringBoot之前,相信各位都有SSM整合的经验,我们知道之前的SSM配置,真的是很痛苦,需要编写大量的xml文件,稍不注意就会出错。但是自从有了SpringBoot,这一切都变得轻松而简单了。 Spring
193 0
|
XML 移动开发 前端开发
SpringBoot 实战 (十二) | 整合 thymeleaf
如题,今天介绍 Thymeleaf ,并整合 Thymeleaf 开发一个简陋版的学生信息管理系统。 SpringBoot 提供了大量模板引擎,包含 Freemarker、Groovy、Thymeleaf、Velocity 以及 Mustache,SpringBoot 中推荐使用 Thymeleaf 作为模板引擎,因为 Thymeleaf 提供了完美的 SpringMVC 支持。Thymeleaf 是新一代 Java 模板引擎,在 Spring 4 后推荐使用。
SpringBoot 实战 (十二) | 整合 thymeleaf
|
Java 数据库连接 Maven
Springboot 系列(十五)如何编写自己的 Springboot starter
Springboot 系列(十五)如何编写自己的 Springboot starter
472 0
Springboot 系列(十五)如何编写自己的 Springboot starter