Jasperreports5.6支持PDF微软雅黑字体
最近在开发需求时遇到一个问题,在打印标签时候要求,使用微软雅黑字体打印货物标签,在Jasperreports中使用微软雅黑字体显示正常,但是在浏览器中却不能正常显示
-
Jasperreport中显示如下
-
在浏览器中显示如下
默认值显示宋体,如果更换为其他字体则无法正常显示
网上解决PDF导出中文显示问题相关的文章很多,无非就是设置控件的pdf font name和pdf encoding属性,但是在5.6中都已经被弃用了(不推荐)。并且原来的解决方案还存在两个问题:(1)预览的字体通常不是STSong-Light, 这会导致预览字体与导出到PDF不一致。(2)当字符串中既有字母又有汉字的时候,导出的PDF可能莫名的换行。本文就介绍一种完美的解决方案,既保持一致性,也不会出现换行问题。
Pdf Font name is now deprecated. You should use a Font extension when using a not standard font. See Tools->Options->Fonts. STSong-Light
根据这个提示猜测到可能需要安装字体
接下来就按照提示信息,下载所需的字体,我下载的是微软雅黑的
下载地址:https://download.csdn.net/download/weixin_43159039/12673117
接下来就是安装字体了
选择工具->选项->Fonts
选择刚刚下载的字体,点击下一步
选择粗体对应的字体文件
最终如下图
点击完成就安装完成了
安装完成之后就会在ireport项目fonts目录下出现字体文件
我的电脑目录为 D:\安装包\iReport-5.6.0\iReport-5.6.0\ireport\fonts,根据实际情况查看
我们会发现新增2个文件,然后irfonts.xml文件也发生了修改
里面的内容变为了
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="微软雅黑">
<normal><![CDATA[msyh.ttf]]></normal>
<bold><![CDATA[msyhbd.ttf]]></bold>
<pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
</fontFamily>
</fontFamilies>
此时只是在我们的ireport编辑器中生效
如果想在项目中使用就必须吧字体生成jar文件,放在项目的WEB-INF/lib文件夹下
选择iReport的安装目录,选择fonts目录,命令行切换到该目录,执行命令
jar cf msyh.jar *
最快的方式则是直接在文件夹地址栏出入cmd
执行之后就在此文件下生成了一个msyh.jar
然后将此jar放入项目中
- tomcat服务中直接放入 apache-tomcat/webapps/项目/WEB-INF/lib中
- 如果是eclipse则直接放入/WEB-INF/lib 或者引入到classpath中就可以
存在问题
- 使用此方法会导致原本的换行功能出现问题
如果你觉得以上特别步骤特别复杂,也可以直接使用我生成好的jar包
地址为:https://download.csdn.net/download/weixin_43159039/12673157