spring中使用jasperreport打印pdf----亲测解决所有bug

依赖:

<!--jasperreport以及所有依赖包-->
		<dependency>
			<groupId>net.sf.jasperreports</groupId>
			<artifactId>jasperreports</artifactId>
			<version>4.1.3</version>
		</dependency>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>3.14</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.groovy</groupId>
			<artifactId>groovy-all</artifactId>
		</dependency>
		<dependency>
			<groupId>com.lowagie</groupId>
			<artifactId>itext</artifactId>
			<version>2.1.7</version>
		</dependency>

最后运行可能会报错,报
net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :
pdfFontName : STSong-Light
pdfEncoding : UniGB-UCS2-H
isPdfEmbedded : false
缺少字体,需要导入 itext2.1.7.jar以及iTextAsian.jar
这两个jar包需要自己手动打包到maven,中央仓库没有

然后就是一堆网上找得到的,使用jasperreports的代码,那个就不贴了
最后,在windows下能运行,到linux就报错,报
net.sf.jasperreports.engine.util.JRFontNotFoundException: Font ‘宋体’ is not available to the JVM.
还是字体,在windows中系统是有宋体的,因此不会报错

先了解下这个程序运行机制:项目依赖中,也就是jar包,有字体的话,就直接使用,没有的话找部署这个项目的系统内置字体。
有两个解决办法:
1:linux安装字体集,不推荐
2:将字体引入到项目中
第一种,程序移植性就降低了,换一个服务器就得安装一次字体,不推荐
我这里使用第二种:
我们使用ireport工具在windows下能正常预览pdf,为啥?因为它里面有引入字体jar包,而不是使用系统内置的,不信?看下面
在这里插入图片描述
找到classpath,看到这个jar包了没,去这个位置找到这个jar包
拿出这个jar包,找到里面的字体文件,\net\sf\jasperreports\fonts\dejavu。
放入所需字体,目前需要宋体,宋体去哪里找?系统就有嘛,上网找系统的内置字体位置,拿到下面这个文件,还有一个ttd的,一起拿了
在这里插入图片描述
放入后修改jar包的xml,\net\sf\jasperreports\fonts\fonts.xml

<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>

把这个jar包打进maven,后在pom中引入

完美解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值