当使用java在生成pdf或者图片时,如生成的文档包含有中文在inux上运行,会出现未安装字体的错误活字体乱码,此时需要我们在服务器上安装中文字体:
1、首先先看是否安装中文字体:
fc-list :lang=zh
-bash: list-fc: command not found
如出现上边提示,还未安装相关字体的软件包
请按如下安装对应软件包
sudo yum -y install fontconfig #安装字体库
sudo yum -y install ttmkfdir mkfontscale #安装字体索引信息
sudo yum install fontconfig #安装字体库
安装完后再次运行fc-list :lang=zh, 如果没显示任何信息,则表示没安装任何中文字体
3、上传中文字体
在服务器的 /usr/share/fonts 下创建zh目录, 创建命令如下
cd /usr/share/fonts
mkdir fonts
mkdir zh
在windows系统下进入C:\Windows\Fonts, 选择想安装的字体上传至服务器,一般情况下是安装微软雅黑和宋体
我选择 msyhbd.ttf 、msyh.ttc 微软雅黑、msyh.ttf、simsun.ttc,一般安装这三个字体足够了,将这三个字体上传至 zh目录
chmod -R 755 /usr/share/fonts/
chmod -R 755 /usr/share/fonts/zh/
5、修改fonts.conf配置文件
操作命令:
vi /etc/fonts/fonts.conf
<!-- Font directory list -->
<dir>/usr/share/fonts</dir>
<dir>/usr/share/X11/fonts/Type1</dir> <dir>/usr/share/X11/fonts/TTF</dir> <dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>
<dir>/usr/share/fonts/chinese</dir> #添加路径
<!-- the following element will be removed in the future -->
<dir>~/.fonts</dir>
<!--
4、生成字库索引信息
上传完字体后,进入zh目录
执行如下:
cd zh
mkfontscale
mkfontdir
该命令在当前zh目录下生成 fonts.dir fonts.scale 两个文件
5. 更新字体缓存
执行 fc-cache
6.再次上看是否安装了中文字体 fc-list :lang=zh
会出现 以下类似信息
fc-list :lang=zh
/usr/share/fonts/zh/msyhbd.ttf: Microsoft YaHei:style=Bold,Félkövér
/usr/share/fonts/zh/simsun.ttc: NSimSun:style=Regular
/usr/share/fonts/zh/simsun.ttc: SimSun:style=Regular
/usr/share/fonts/zh/msyh.ttf: Microsoft YaHei:style=Regular,Normal
表示安装成功过
7、重启应用,切记要重启对应的应用,我的是web应用,重启tomcat,生成pdf成功
重启 docker 即可:systemctl restart docker