项目场景:
使用JasperReports进行PDF导出
问题描述
在JasperReports不兼容高版本itext引发的异常的评论中有网友讲6.19.0中文显示异常
原因分析:
可能是Maven编译时将字体文件损坏
了,或者配置字体
的方式有误,再或者和模板配置的字体不一致
解决方案:
- 先将Maven编译压缩二进制功能关闭,可参考
Maven压缩资源导致文件损坏的解决
- 检查模板配置的字体
比如:我这里配置模板的字体为华文宋体
- 在项目中配置字体
其中:stsong.TTF(字体文件)
、fonts.xml(字体文件配置)
、jasperreports_extension.properties(JasperReports的配置文件)
fonts.xml
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name = "华文宋体">
<normal>stsong/stsong.TTF</normal>
<bold>stsong/stsong.TTF</bold>
<italic>stsong/stsong.TTF</italic>
<boldItalic>stsong/stsong.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>
</fontFamilies>
jasperreports_extension.properties
# JasperReports字体配置的工厂
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
# 指定字体配置的位置
net.sf.jasperreports.extension.simple.font.families.lobstertwo=stsong/fonts.xml
*注
:如果以上还是不可以,本UP主也是没呀办法了,毕竟这样配置我的项目是可以正常显示中文的呀!