SpringBoot(十六)_springboot整合JasperReport6.6.0

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 现在项目上要求实现套打,结果公司里有个人建议用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
相关文章
|
3天前
|
XML 开发框架 Java
【SpringBoot】什么是SpringBoot?简析SpringBoot
【SpringBoot】什么是SpringBoot?简析SpringBoot
9 1
|
10月前
|
Java API
《springboot实战》 第十二章 SpringBoot整合swagger-bootstrap-ui
《springboot实战》 第十二章 SpringBoot整合swagger-bootstrap-ui
68 0
|
编解码 安全 Java
【笑小枫的SpringBoot系列】【十六】SpringBoot生成PDF
【笑小枫的SpringBoot系列】【十六】SpringBoot生成PDF
146 0
|
存储 Java 测试技术
【笑小枫的SpringBoot系列】【十七】SpringBoot文件上传下载
【笑小枫的SpringBoot系列】【十七】SpringBoot文件上传下载
83 0
|
运维 NoSQL Java
【笑小枫的SpringBoot系列】【十八】SpringBoot中的Properties配置
【笑小枫的SpringBoot系列】【十八】SpringBoot中的Properties配置
86 0
|
NoSQL Java Maven
【笑小枫的SpringBoot系列】【一】SpringBoot项目创建
【笑小枫的SpringBoot系列】【一】SpringBoot项目创建
76 0
|
XML IDE NoSQL
【笑小枫的SpringBoot系列】【十五】SpringBoot根据模板生成Word
【笑小枫的SpringBoot系列】【十五】SpringBoot根据模板生成Word
234 0
|
Java 调度 Spring
SpringBoot与任务(十一)
SpringBoot与任务(十一)
71 0
SpringBoot与任务(十一)
|
消息中间件 缓存 Java
【SpringBoot2 从0开始】如何编写 springboot 应用?
【SpringBoot2 从0开始】如何编写 springboot 应用?
【SpringBoot2 从0开始】如何编写 springboot 应用?
|
XML SQL Java
SpringBoot2.x系列教程06--SpringBoot中结合XML文件实现SSM整合
前言 前面几篇文章中,壹哥 主要是带各位简单的认识一下SpringBoot,算是做了个开场白,接下来才是咱们学习SpringBoot的重点。所以从本篇文章开始,咱们逐步进入到更实用的学习上来,前面的配置只是为了让我们使用SpringBoot的时候更简单舒服一点。 接下来我们就看看在SpringBoot到底该怎么实现SSM整合吧。 一. 添加核心配置 1. SSM整合简介 在学习SpringBoot之前,相信各位都有SSM整合的经验,我们知道之前的SSM配置,真的是很痛苦,需要编写大量的xml文件,稍不注意就会出错。但是自从有了SpringBoot,这一切都变得轻松而简单了。 Spring
185 0