2019-04-10 集成JasperReport
1. 报表的制作过程为
① 制作.jrxml报表模板文件,并编译成.jasper
② 代码处理.jasper文件并填充数据进行输出
2. 一开始是打算使用iReport作为模板制作工具的,但是有以下局限
- iReport的最高版本是2014年的5.6版,因此它最多支持JDK7以下版本
- 现在项目起码用的JDK8,所以需要安装两个以上的JDK
- 可能是高版本编译出来的JavaBean,所以无法使用iReport进行JavaBean数据源的操作,查找不出属性

3. 使用Eclipse安装JasperStudio插件
- 安装完之后不管是打开Eclipse还是打开插件,都会报错,因此卸载掉了

4. 直接下载JasperStudio
- 使用了一下,发现配置了classpath到我得项目classes下,还是会报找不到class的错
- 使用JasperStudio导入项目可以直接跟开发工具新建类时选择接口的方式查找到JavaBean
- 因此目前的方案是:当增加报表.jasper时,使用JasperStudio导入项目处理,生成后回到开发环境刷新资源同步得到

5. Spring Boot简单集成(为简化直接先在controller层写代码)
① 引入依赖
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.8.0</version>
</dependency>
② 写请求代码(在线查看pdf)
@RequestMapping("/c02v01/report")
public void getReport(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, Object> parameters = new HashMap<String, Object>(16);
// 由jrxml文件编译后生产jasper文件的路径
String jasperPath = ResourceUtils.getURL("classpath:jasper/report2.jasper").getPath();
FileInputStream isRef = null;
ServletOutputStream sosRef = null;
try {
isRef = new FileInputStream(new File(jasperPath));
sosRef = response.getOutputStream();
// 组装list数据源
List<Teacher> list = teacherMaper.selectAll();
JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JRBeanCollectionDataSource(list));
response.setContentType("application/pdf");
} catch (JRException e) {
e.printStackTrace();
} finally {
sosRef.flush();
sosRef.close();
}
}
6. JasperReport请求到的PDF中文不显示问题
- 解决过程1:引入依赖itext-asian 测试结果:无效
- 解决过程2:引入依赖jasperreports-fonts 测试结果:无效
- 解决过程3:引入依赖cn.lesper:iTextAsian 测试结果:使用宋体有效
最终解决:出现这问题的原因是JasperreportStudio里面包含了字体font,但是jasperreports的依赖包并不包含font文件,为了让项目能获得font包,可以增加font配置
① 暂时引入jasperreports-fonts 依赖
② 把依赖内的jasperreports_extension.properties放入到resource根目录(第二个属性指向自己的配置xml)
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.dejavu=net/sf/jasperreports/fonts/fonts.xml
③ 在上述第二个属性路径下取出xml文件,把它放入自己的配置路径下
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies> <fontFamily name="宋体">
<normal>net/sf/jasperreports/fonts/dejavu/simsun.ttf</normal>
<bold>net/sf/jasperreports/fonts/dejavu/simsun.ttf</bold>
<italic>net/sf/jasperreports/fonts/dejavu/simsun.ttf</italic>
<boldItalic>net/sf/jasperreports/fonts/dejavu/simsun.ttf</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'宋体', Arial, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">'宋体', Arial, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily> <!-- fontFamily节点可以配置多个,可以根据studio对应的font-type配置不同的 -->
<!-- simsun.ttf为对应的font库,可以从window系统下C:\Windows\Fonts取到放入项目中 -->
</fontFamilies>
④ 可以把以上的打包进jar包中(依赖cn.lesper:iTextAsian就是这样把以上步骤打包成jar的,使用自己的配置记得把该依赖去掉),如果不打包,可以直接跳过这步
⑤ 重新启动SpringBoot即可
⑥ 去除jasperreports-fonts、cn.lesper:iTextAsian等同结构的依赖(主要是去除多个jasperreports_extension.properties,保留自己要的那个)

这图就是导入字体库的几个必须文件,分别为指向模板文件与字体库映射的映射文件的配置文件jasperreports_extension.properties、模板文件与字体库映射的映射文件fonts.xml 、字体库文件
2019-04-10 集成JasperReport的更多相关文章
- 2019.04.10打卡(HTML)
代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...
- PowerBI更新2019/04 - 解决方案架构 - PowerBI Solution Architecture(一图胜万字!)
Power BI 架构图 (2019/04) 1) Power BI Desktop 是一个免费的工具.它可以用来准备和管理数据模型:包括链接各种数据:做数据清洗:定义关系:定义度量值和层级关系:应用 ...
- Gitbook环境搭建及制作——2019年10月24日
1.gitbook介绍 GitBook 是一个基于 Node.js 的命令行工具,支持 Markdown 和 AsciiDoc 两种语法格式,可以输出 HTML.PDF.eBook 等格式的电子书.可 ...
- Visual Studio 2019 v16.10 和 v16.11 Preview 1 现已推出!
Visual Studio 2019 v16.10有什么新功能? 我们很高兴地宣布Visual Studio 2019 v16.10 GA 和 v16.11 preview 1发布.此版本使我们的主题 ...
- 开机时自动启动的AutoHotkey脚本 2019年10月09日
;;; 开机时自动启动的AutoHotkey脚本 2019年10月09日;; http://www.autoahk.com/archives/16600; https://www.cnblogs.co ...
- ;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk
;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk ;~ 此脚本用于测试执行一行或多行AHK脚本源代码的效果;~ 此脚本最后修改于2019年9月22日20时03分;~ 把此 ...
- Ubuntu LTS 系统学习使用体会和实用工具软件汇总 6.04 8.04 10.04 12.04 14.04 16.04
Ubuntu LTS 系统学习体会和工具软件汇总 6.04 8.04 10.04 12.04 14.04 16.04 ubuntu入门必备pdf:http://download.csdn.net/de ...
- 每日一练ACM 2019.04.13
2019.04.13 第1002题:A+B Proble Ⅱ Problem DescriptionI have a very simple problem for you. Given two in ...
- Java学习之JDBC 2019/3/10
Java学习之JDBC 大部分的程序都是用来通过处理数据来达到人们预期的效果,数据是粮食,没有数据操作的程序就像helloworld程序一样没有用处.因此数据库操作是重中之重,是程序发挥功能的基石,j ...
- SPSS 2019年10月24日 今日学习总结
2019年10月24日今日课上内容1.SPSS掌握基于键值的一对多合并2.掌握重构数据3.掌握汇总功能 内容: 1.基于键值的一对多合并 合并文件 添加变量 合并方法:基于键值的一对多合并 变量 2. ...
随机推荐
- 强化学习(六)时序差分在线控制算法SARSA
在强化学习(五)用时序差分法(TD)求解中,我们讨论了用时序差分来求解强化学习预测问题的方法,但是对控制算法的求解过程没有深入,本文我们就对时序差分的在线控制算法SARSA做详细的讨论. SARSA这 ...
- 【Javascript】JS遍历数组的三种方法:map、forEach、filter
前言 近一段时间,因为项目原因,会经常在前端对数组进行遍历.处理,JS自带的遍历方法有很多种,往往不加留意,就可能导致知识混乱的现象,并且其中还存在一些坑.前端时间在ediary中总结了js原生自带的 ...
- 为何IntelliJ IDEA比Eclipse更好
阅读本文大概需要 4.2 分钟. 本文为译文,翻译:彭博 https://www.oschina.net/news/26929 争论 有一些没有唯一正确答案的“永恒”的问题,例如,更好的是:Windo ...
- sql的查询语句的总结
一:基本的查询sql 1:基本常用查询 select * from student; --select select all sex from student; --all 查询所有 select d ...
- Spring Boot Security 整合 JWT 实现 无状态的分布式API接口
简介 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案.JSON Web Token 入门教程 - 阮一峰,这篇文章可以帮你了解JWT的概念.本文重点讲解Spring Boo ...
- 升级WIN10 (9879)后IE无响应的解决办法
身为程序猿,当然有了新系统就要尝尝鲜,有WIN8时,哥是朋友圈第一个用的,有WIN8.1时哥也是第一个升级的. 现在WIN10来了,当然也得赶紧尝尝鲜.直接下载了 9879版的预览版本安装. 要说WI ...
- jQuery内容过滤选择器与子元素过滤选择器用法实例分析
jQuery选择器内容过滤 一.:contains(text) 选择器::contains(text)描述:匹配包含给定文本的元素返回值:元素集合 示例: ? 1 2 $("div.mini ...
- [20190416]process allocation latch.txt
[20190416]process allocation latch.txt --//看链接:http://andreynikolaev.wordpress.com/2010/12/16/hidden ...
- java8新特性-默认方法
作为一个java程序猿,经常会被问基础怎么样,对于这个问题,我理解的有两方面:一是对于java基础的理解和掌握,比如JDK的相关特性:二是工作的经历,毕竟,语言编程是一门实战性质的艺术,就算掌握了千万 ...
- 八皇后问题(C#)
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同 ...