admin管理员组

文章数量:1594753

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/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="&#24494;&#36719;&#38597;&#40657;">
       <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/download/weixin_43159039/12673157

本文标签: 微软字体PDF