Linux安装字体 java生成pdf中文乱码或提示未安装字体错误

发布时间 2023-09-18 16:44:35作者: 全琪俊

当使用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/

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