JasperReport导出PDF报缺少字体错误

最近在使用JasperReport做打印导出时出现“Font '宋体' is not available to the JVM. See the Javadoc for more details.”查了那边的环境后发现部署的Linux机子没有按照宋体,后来查找了一些资料,采用了以下的方案来解决:

(1)下载Jasperreport项目进入目录\demo\fonts\net\sf\jasperreports\fonts\dejavu

(2)将C:\WINDOWS\Fonts目录中的宋体字体文件,拷贝到上述目录中,并修改后缀为simsun.ttf

(3)修改\demo\fonts\net\sf\jasperreports\fonts目录中的fonts.xml,追加fontFamily元素,并配置宋体信息:

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

(4)demo\fonts目录下的字体项目打出jar包放到项目的WEB-INF/lib目录

(5)最后,在Web项目的根目录增加配置文件jasperreports.properties,内容如下:

net.sf.jasperreports.awt.ignore.missing.font=true 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
最后按自己的理解来解释下为什么这样做就可以解决缺少字体的错误,因为在启动的时候会加载项目根目录的配置文件jasperreports.properties,然后知道了JasperReport在导出时找不到字体应该怎么处理,同时我们手工在项目中添加了相应的字体,这样就可以不用再服务器中安装缺少的字体了。假如在制作的jasper模板中还有其他字体,也可以采用相同的方式处理
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值