JasperServer 图表中文乱码解决
问题描述
报表本地预览正常。上传到 Linux 服务器后,图表中的中文显示为“□”,其他地方中文显示正常。
问题原因
Jasper 图表生成使用了 JFreeChart,后者需要依赖本地字体。如果在 JasperServer 中找不到相应的中文字体,则会产生上述问题。
解决方式
可以将要用到的字体导入到 Jaspersoft Studio,在报表开发时使用这些定义的字体。然后通过该开发工具将用到的字体导出为 Jar 包部署到服务器中,即可解决该问题。具体步骤如下:
-
在 Jaspersoft Studio 中,通过 Window -> Preferences 进入 Preferences 窗口
-
通过 Jaspersoft Studio -> Fonts 进入 Fonts 设置页面
-
通过 Add From Path,选择路径将将用到的字体(.ttf 文件)导入到开发工具中。如果有多个字体,还可以添加一个 Set 字体集,方便使用
-
勾选要使用的字体或字体集,点击 Export,在指定位置导出为一个 jar 包
-
点击 Apply,OK,完成字体导入
-
开发图表时,将使用的字体全部选择为之前导入到开发工具中的字体,这些内置的字体会显示在一个分隔符上方(注意 Chart 和 Chart Plot 页签下的所有可以设置字体的地方都要这样处理)。改好之后重新发布到 JasperServer。
-
在服务器中,编辑 <js-install>\WEB-INF\classes\jasperreports.properties 文件,插入如下行:
net.sf.jasperreports.web.resource.pattern.fonts=fonts/.*
-
将之前导出的字体 jar 包添加到 <js-install>WEB-INF\lib 路径下
-
关闭并重新启动 JasperServer。图表上的中文字体可以正确展示了!