历史版本2 :服务器安装字体 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

1)用户在打印、导出时,会出现与预览结果不一致的情况。如:

  • 在 Linux 环境下,发现客户端预览是正常的,但是在导出或打印时会出现乱码,或者一些特殊符号如人民币符号「¥」,在导出或打印时发现变成了美元符号「$」。

  • 在 Linux 系统的客户端,预览或导出的图片乱码。

  • Linux 下打印预览,有重影。

  • Linux 服务器导出文字重叠。

  • 导出 pdf 时图表里的中文变成框框。

  • 本来设置的字体是微软雅黑,但是导出来的 PDF 却是宋体。

  • 插入斜线乱码,斜线为方框。

2)在本地设计器工程下预览字体正常,保存在服务器上,通过服务器预览时,效果和设计器工程预览不一致。

1.2 原因分析

  • 客户端导出或者打印时,字体使用的是服务器的系统字体和服务器依赖的 JRE 下的字体,若服务器没有设计器设计时选用的字体,则会出现乱码或者字体被替换的问题。

  • 设计器设计报表时,使用的是设计器所在设备本地系统的字体,保存在服务器上后,若服务器没有设计器设计时选用的字体,则会出现预览不一致的问题。

1.3 解决思路

服务器安装缺失的字体包。

注1:服务器安装后,如果要在客户端浏览器预览时也显示出字体效果,客户端系统也必须安装该字体。

注2:集群环境下,需要在所有节点安装缺失的字体。

2. Lunix 系统如何安装编辑

2.1 检查中文语言包

检查系统中是否有字体包zh_cn.UTF-8,查看系统默认语言是否为zh_cn.UTF-8

locale -a | grep zh_CNecho $LANG

1619330481556168.png

若不是,安装中文语言包以及设置系统默认语言的方法请参见:Linux 系统安装中文语言包

2.2 确认缺失字体

查看有问题的字体部分,确认可能缺失的字体。如下图所示,缺失黑体:

1614750925990785.png

10.0.16 及之后的版本支持制作模板或预览模板时对使用的字体进行检测,如果不包含对应字体,将提示设计者或者使用者,设计者或者使用者即可不用自己查找缺失的字体。详细内容可参考:字体缺失检测

2.3 安装缺失字体

1)使用fc -list查看字体库,若没有安装,使用yum -y install fontconfig安装,如下图所示:

34.png

2)在/usr/share/fonts目录下新建一个目录chinese,把本地 Windows 系统C:\Windows\Fonts中的字体,上传到/usr/share/fonts/chinese目录下。

例如上传「黑体常规」字体,如下图所示:

36.png

3)修改 chinese 文件夹权限,如下图所示:

chmod -R 755 /usr/share/fonts/chinese

37.png

4)执行下面命令:

cd /usr/share/fonts/chinesemkfontscale #字体扩展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,查看是否安装成功:

39.png

2.4 重启服务器

字体安装好后,重启服务器工程,预览、导出、打印时就会显示处对应的字体。

3. Windows 系统如何安装编辑

3.1 确认缺失字体

查看有问题的字体部分,确认可能缺失的字体。如下图所示,缺失黑体:

10.0.16 及之后的版本支持制作模板或预览模板时对使用的字体进行检测,如果不包含对应字体,将提示设计者或者使用者,设计者或者使用者即可不用自己查找缺失的字体。详细内容可参考:字体缺失检测

3.2 安装缺失字体

确认服务器 C:\Windows\Fonts 文件夹中没有对应字体后,将下载的字体导入到 C:\Windows\Fonts 文件夹中,或者直接在系统的字体设置中安装。

若系统中没有黑体,直接在 C:\Windows\Fonts 文件夹中导入字体。如下图所示:

3.3 重启服务器

字体安装好后,重启服务器工程,预览、导出、打印时就会显示处对应的字体。

注:字体安装好后,假如遇到读取不到字体的情况,可以将字体拷贝到服务器 %Tomcat%jre/lib/fonts 目录下,重启服务器。