最近使用jfreeChar+easypoi做一个word文档导出图表的功能,其实echar功能更强大,样式更完善。但是考虑到我们是后端实现,所以采用了jfreeChar.
在开发环境服务器导出正常,在测试环境服务器就不行。遇到这个坑,花了大半天时间才解决掉,百度上也基本百度不到,只能慢慢排查,哎。。。。心累。(希望我的三大方案能够帮助到大家)
1.创建主题样式 解决乱码
//创建主题样式 解决乱码(CN代表中文,这一步一定要添加)
StandardChartTheme standardChartTheme = new StandardChartTheme("CN");
//设置标题字体
standardChartTheme.setExtraLargeFont(new Font("宋体", Font.BOLD, 15));
//设置图例的字体
standardChartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 12));
//设置轴向的字体
standardChartTheme.setLargeFont(new Font("宋体", Font.BOLD, 12));
//设置主题样式
ChartFactory.setChartTheme(standardChartTheme);
添加了StandardChartTheme standardChartTheme = new StandardChartTheme("CN");结果还是乱码,
2.升级jfreechart的pom文件依赖版本
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jcommon</artifactId>
<version>1.0.24</version>
</dependency>
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.2.0</version>
</dependency>
可能是你的版本太低,导致出现乱码。
3.服务器缺少中文字体,最后定位到这一步才解决乱码问题,真的是要细心慢慢排查才能解决问题。缺少中文字体可以参考这位作者的服务器缺少字体文件导致下载文件乱码解决方案_一个英文名字很难念的人的博客-CSDN博客_服务器缺少字体