(本文档仅供参考)
问题现象
对于电子表格报表,如下情形时,可能会出现中文变为乱码的情况。
...
正常浏览:
导出到 PDF 时出现异常(字符乱码):
问题原因
1)电子表格报表设置了某种字体,但服务器所在的操作系统上缺少对应的字体文件。尤其是当 Smartbi 部署到 Unix/Linux 等系统上时,最有可能出现该问题。原因是通过客户端访问smartbi资源,表格的展现是由浏览器解析的,使用的是客户端操作系统的字体文件,但是图形的展现以及报表的打印、导出PDF是由服务器生成的,使用的是服务器操作系统的字体文件,当服务器操作系统缺少对应字体则可能出现乱码或者字体不正确的现象。
...
上传的字体建议是上传项目有版权的字体或者免费字体!!!
解决方案
(上传的字体建议是上传项目有版权的字体或者免费字体!!!)
...
依据“External Font Dir“ 提供的路径,如上图路径是 /home/Tomcat/tomcat-v10.5-10500/bin/Font-smartbi,我们可以把字体放置在对应的Font-smartbi文件夹中,并重启smartbi应用服务器即可(linux环境下请授予文件读写权限)。重启后再次使用【系统监控】-【所有字体】 确认可以看到该字体,然后再打印或者导出到 PDF 就正常了。
docker环境字体加载
在docker环境部署smartbi后,访问报表导出的时候图形出现字体乱码问题,具体可参考wiki文档添加字体:高性能版本(docker)字体乱码处理
特殊情况
特殊情况1
如果按照上述步骤操作后,仍然有中文乱码问题,可能是因为应用服务器所用的 JDK 没能正确地从上述“External Font Dir”目录下加载那些字体文件。将字体文件拷贝到 JDK 自己的 fonts 目录下。JDK 对应的字体文件路径是:/jdk/jre/lib/fonts ,参见下图,然后重启smartbi应用服务器。
(注意:有些情况加到jdk也无法读取,这时候还是需要尝试在 Font-smartbi文件夹中添加window系统所有字体,然后重启smartbi应用服务器,看是否能解决)
特殊情况2
通常情况下,进行了“特殊情况1”的解决方案后,都是可以成功解决的,但有时候存在Linux系统就是无法读取到某些字体,也没有办法自动在读取不到对应字体的情况下,换成另外的字体,这时候可以通过如下方式解决:
...