1.下载JasperReport工具
下载地址:社区版 - Jaspersoft 社区
邮箱:lorettepatri.ckoa5434@gmail.com
密码:Zx123456.
2.工具使用方法注意
1.一次参数需要在左下角Parameters中新建,直接拖转右上角的TextField不会自动新建参数,到头来还是要在Parameters中新建
2.循环参数需要在左下角Fields中新建List中对象对应参数字段
3.常用的属性调整
4.字体设置,不支持中文,需要手动指定
5.排版时如何排版List数据
以本格式为例,中间的需要循环暂时,上下只显示一次.
参考数据:
我这里不是表格形式,所以没有列头,没用到Column Header,具体需根据自己情况安装
3.项目代码使用
1.引入必要文件
fonts.xml内容如下,只需要更改路径即可
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<!--
可以配置多个字体
name 属性:指定字体名称,这里的字体名称在 JasperReport 模板文件中使用的要一致,才能够匹配上
-->
<fontFamily name="MSYaHei">
<!-- 正常字体路径 -->
<normal><![CDATA[font/STSONG.TTF]]></normal> <!-- 这里面为字体路径 -->
<!-- 加粗字体路径 -->
<bold><![CDATA[font/STSONG.TTF]]></bold> <!-- 这里面为字体路径 -->
<!-- 斜体字体路径 -->
<italic><![CDATA[font/STSONG.TTF]]></italic> <!-- 这里面为字体路径 -->
<!-- 加粗斜体字体路径 -->
<bolditalic><![CDATA[fonts/STSONG.TTF]]></bolditalic> <!-- 这里面为字体路径 -->
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
<pdfEncoding>Identity-H</pdfEncoding>
<exportFonts/>
</fontFamily>
</fontFamilies>
STSONG.TTF为华文宋体文件,这里的STSONG是文件名不是字体名,所以不用改成中文"华文宋体".字体下载地址
C:\Windows\Fonts
jasperreports_extension.properties内容如下
# ?????????
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
# 这里是字体路径
net.sf.jasperreports.extension.simple.font.families.default=font/fonts.xml
2.引入POM,注意jasperreports引入了许多外部jar包,不是这有问题,就是那个包maven仓库没有,这是我找到的对于我自己项目没报错的版本
<!-- https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.20.0</version>
<exclusions>
<!--
排除自带的itext依赖,因为自带的itext版本是 2.1.7.js10
这个版本在中央仓库里面没有,无法下载
-->
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入itext依赖,因为JasperReports中使用了itext操作PDF -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
3.建议把jrxml源文件拷贝到项目中,避免本地丢失
4.常见错误
1.java.lang.ClassNotFoundException大概率都是版本问题,换版本试一试是否还是同样错误
java.lang.ClassNotFoundException:com.lowagie.text.Document
2.jasperreort (wrong name: 大概率编译后的文件出了问题,我开始用的是工具编译,后面直接把jrxml文件放到项目中用代码编译成jasper文件,这样也可以保留jrxml文件在项目上,不会本地丢失
java.lang.NoClassDefFoundError: Jrxxxxxxxx _1811b31b27d13da1f8bc9955038dc0646b5de2a76581526d5a0228d015ebfd49 (wrong name: Jrxxxxxxxx )