反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

服务器安装字体

  • 文档创建者:RosieY
  • 历史版本:12
  • 最近更新:Leo.Tsai 于 2022-07-05
  • 1. 概述

    1.1 问题描述

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

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

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

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

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

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

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

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

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

    3)在 Linux 系统中出现报表斜线丢失。

    4)Linux 系统中,在主报表中插入子报表,如果子报表有中文,那么在主报表中显示的时候会出现中文乱码,但主报表其他部分或者子报表单独访问的时候中文并不会乱码。

    5)模板在钉钉中预览单元格内容显示不全,但是在浏览器中预览正常。

    1.2 原因分析

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

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

    • 对于 Linux 系统 Java 在 drawString 的时候,可能会没有对应的字体,此时就会出现斜线丢失的情况。

    • 在使用插入子报表时,实际上是在服务器端事先画好图片,当客户端发出请求访问主报表时,再去调用已画好的图片。当插入的子报表中含有中文的时候会调用操作系统中的语言包,如果 Linux 中没有安装中文语言包会导致出现乱码现象。

    1.3 解决思路

    思路一:使用「字体管理插件」在平台安装缺失字体。详情请参见:字体管理插件

    思路二:Linux 系统通过执行相关语句安装字体;Windows 系统通过在C:\Windows\Fonts下安装字体。

    本文采用思路二。

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

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

    2. Linux 系统如何安装

    2.1 检查中文语言包

    检查系统中是否有字体包 zh_cn.UTF-8 ,查看系统默认语言是否为 zh_cn.UTF-8 ,如下图所示:

    locale -a | grep zh_CN

    1619330481556168.png

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

    2.2 确认缺失字体

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

    1614750925990785.png

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

    2.3 安装缺失字体

    1)使用 fc-list 查看字体库,如下图所示:

    注:若提示:-bash: fc-list: command not found,使用 yum -y install fontconfig语句后,再次查看字体库。

    2.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/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 ,查看是否安装成功,如下图所示:

    39.png

    2.4 重启工程

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

    3. Windows 系统如何安装

    3.1 确认缺失字体

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

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

    3.2 安装缺失字体

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

    3.3 重启工程

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

    注:字体安装好后,若遇到读取不到字体的情况,可以将字体拷贝到服务器 JDK_HOME/jre/lib/fonts 目录下,重启工程所在的容器。


    附件列表


    主题: 部署集成
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526