1. 概述
1.1 问题描述
Linux 服务器导出文字重叠。
导出 pdf 时图表里的中文变成框框。
插入斜线乱码,斜线为方框。
1.2 原因分析
服务器缺失仪表板使用的字体。
1.3 解决思路
服务器安装缺失的字体。
注:集群环境下,需要在所有节点安装缺失的字体。
2. Linux 系统如何安装
2.1 检查中文语言包
检查系统中是否有字体包zh_cn.UTF-8,查看系统默认语言是否为zh_cn.UTF-8:
locale -a | grep zh_CN
若不是,安装中文语言包以及设置系统默认语言的方法请参见:Linux 系统安装中文语言包
2.2 确认缺失字体
仪表板中乱码的部分用的什么字体,为缺失字体。
假设分组表导出后,表头乱码,表头用的为黑体,则缺少黑体字体包。
2.3 安装缺失字体
1)使用fc-list查看字体库,如下图所示:
注:若提示:-bash: fc-list: command not found,使用 yum -y install fontconfig语句后,再次查看字体库。
2)在/usr/share/fonts目录下新建一个目录chinese,把本地 Windows 系统C:\Windows\Fonts中的字体,上传到/usr/share/fonts/chinese目录下。
例如上传「黑体常规」字体,如下图所示:
3)修改 chinese 文件夹权限,如下图所示:
chmod -R 755 /usr/share/fonts/chinese
4)执行下面命令:
cd /usr/share/fonts/chinese
mkfontscale #字体扩展
mkfontdir #新增字体目录
fc-cache -fv #刷新缓存,或者执行
fc-cache /usr/share/fonts/chinese/fc-list #查看系统字体
若执行mkfontscale,提示mkfontscale: command not found,需安装:yum install mkfontscale。
执行命令:fc-list | grep simhei.ttf,查看是否安装成功:
2.4 重启工程
字体安装好后,重启工程,预览、导出时就会显示处对应的字体。
3. Windows 系统如何安装
3.1 确认缺失字体
仪表板中乱码的部分用的什么字体,为缺失字体。
假设分组表导出后,表头乱码,表头用的为黑体,则缺少黑体字体包。
3.2 安装缺失字体
确认服务器 C:\Windows\Fonts 文件夹中没有对应字体后,将下载的字体导入到 C:\Windows\Fonts 文件夹中,或者直接在系统的字体设置中安装。
若系统中没有黑体,直接在 C:\Windows\Fonts 文件夹中导入字体。如下图所示:
3.3 重启工程
字体安装好后,重启工程,预览、导出、打印时就会显示处对应的字体。
注:字体安装好后,若遇到读取不到字体的情况,可以将字体拷贝到服务器 JDK_HOME/jre/lib/fonts 目录下,重启工程所在的容器。