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

目录:

1. 概述编辑

1.1 问题描述

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

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

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

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

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

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

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

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

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

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

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

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

6)工程预览模板报错:java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)

1.2 原因分析

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

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

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

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

2. 解决思路编辑

解决思路一:给工程安装字体

使用「字体管理插件」,给工程安装字体。

字体仅对安装配置了的FineReport工程生效,对Linux/Windows服务器中的其他工程/应用不生效

详情请参见:字体管理插件

解决思路二:给服务器设置中文语言环境和字体

注1:如果是预览工程中的模板出现乱码,需要检查:

  • 工程所在服务器(集群工程,需要检查每一个节点所在服务器)。

  • 预览模板的客户端设备(电脑)。

注2:如果是预览设计器的模板出现乱码,需要检查:

  • 设计器远程设计的工程所在服务器。

  • 设计器所在设备(电脑)。