在jasperreports中自定义字体

论坛 期权论坛 脚本     
匿名技术用户   2020-12-29 23:09   25   0

记录下我在公司使用jasper自定义字体时的方法和遇到的坑

我的jasper的maven配置

<dependency>
 <groupId>net.sf.jasperreports</groupId>
 <artifactId>jasperreports</artifactId>
 <version>6.3.0</version>
</dependency>
<dependency>
 <groupId>net.sf.jasperreports</groupId>
 <artifactId>jasperreports-fonts</artifactId>
 <version>5.6.1</version>
</dependency>

1:我们开发报表有些时候官方默认的字体包不能满足我们的需要,所以我们开始自定义字体,于是在网上查了很多资料,按照网上的方式自定义的字体文件放到jasperreports-fonts-5.6.1.jar的net\sf\jasperreports\fonts\dejavu目录下,字体文件要求必须ttf格式,然后在net\sf\jasperreports\fonts\fonts.xml文件中增加字体配置,我的配置如下:

<fontFamily name="宋体">
  <normal>net/sf/jasperreports/fonts/dejavu/simsun.ttf</normal>
  <bold>net/sf/jasperreports/fonts/dejavu/simsunbd.ttf</bold>
  <italic>net/sf/jasperreports/fonts/dejavu/simsun.ttf</italic>
  <boldItalic>net/sf/jasperreports/fonts/dejavu/simsunbd.ttf</boldItalic>
  <pdfEncoding>Identity-H</pdfEncoding>
  <pdfEmbedded>true</pdfEmbedded>
  <exportFonts>
   <export key="net.sf.jasperreports.html">'宋体','simsun'</export>
   <export key="net.sf.jasperreports.xhtml">'宋体','simsunbd'</export>
  </exportFonts>
 </fontFamily>
 
<fontFamily name="仿宋_GB2312">
  <normal>net/sf/jasperreports/fonts/dejavu/simsun.ttf</normal>
  <bold>net/sf/jasperreports/fonts/dejavu/simsunbd.ttf</bold>
  <italic>net/sf/jasperreports/fonts/dejavu/simsun.ttf</italic>
  <boldItalic>net/sf/jasperreports/fonts/dejavu/simsunbd.ttf</boldItalic>
  <pdfEncoding>Identity-H</pdfEncoding>
  <pdfEmbedded>true</pdfEmbedded>
  <exportFonts>
   <export key="net.sf.jasperreports.html">'宋体','simsun'</export>
   <export key="net.sf.jasperreports.xhtml">'宋体','simsunbd'</export>
  </exportFonts>
</fontFamily>

2:在jasper ireport designer工具中,选择工具-选项-fonts-install font 安装指定字体,最后export as extension导出字体jar,再将jar包导入到工具-选项-classpath中就可以在控件字体选项中看到新增的字体

3:最后将字体jar包jasper模版文件放到服务器测试是否使用的自定义字体,我生产环境是用的tomcat,第一次放上去的时候发现字体还是不能生成,报错提示字体文件找不到,后来在测试环境断点调试发现jasper使用自定义字体文件时会需要一个临时的目录存放临时文件的,这个目录就是tomcat下temp目录,而我的服务器没有这样的目录,导致jasper在存储和查找这个临时文件时找不到目录,所以提示字体文件找不到,最后到服务器加上这个目录就好了。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP