帆软Linux导出或打印乱码

Linux导出或打印乱码

1. 问题描述

(1)在Linux环境下,会发现客户端预览是正常的,但是在导出或打印时会出现乱码,或者一些特殊符号如人民币符号"¥",在导出或打印时发现变成了美元符号"$"。
(2)在Linux系统的客户端,预览或导出的图片乱码。
 

2. 原因

 
2.1 预览正常或不正常原因
(1)客户端浏览器访问linux服务器上的报表时,服务器将结果返回给浏览器,浏览器返回结果,由于大部分客户端都是windows系统,所以一般都存在相应的字体,不太会乱码。
(2)若是直接在Linux系统下预览,缺失相应字体,则会出现乱码问题。
2.2 导出或打印出现问题的原因
在对模板进行导出或打印时,请求会发送到服务器,由服务器处理,此时服务器就需要相应的字体才能够画出结果,此时由于Linux上面可能找不到对应的字体,因此就会出现乱码现象或者"¥"符号变成"$"符号。
 

3. 解决方案

 
在Windows系统中下的C:\WINDOWS\Fonts\找到相应的字体,将其拷贝到Linux系统下报表服务器使用的JDK下JRE的\lib\fonts目录下,重启服务器,即可解决预览、导出和打印乱码问题。
注:若上述方法无法解决问题,则需要在对应的lib\fonts目录下新建fallback文件夹,然后将字体拷贝进去,重启服务器即可。
如果更换字体包之后,¥显示成了$,在linux下面将字体的默认值设置为中文即可。

帆软报表_导出图表中文图例丢失

场景:

在本地导出图表,图例正常,在服务器导出,图例丢失

原因:

图例为中文字符,服务器上未安装中文字体

解决方案:

将C:\Windows\Fonts 中的MSYH.TTF复制到/usr/share/fonts/目录下

然后建立字体索引信息,更新字体缓存,使用如下命令:

cd /usr/share/fonts/

mkfontscale

mkfontdir

fc-cache

现在我们再来查看微软雅黑字体,是否安装成功,使用如下命令:

fc-list :lang=zh

Linux 系统安装中文语言包

1. 概述

1.1 问题描述

使用 Linux 系统时,有时我们会遇到中文乱码。如下图所示:

1.2 解决思路

出现这个情况一般是由于没有安装中文语言包或者设置的默认语言有问题导致的,可参考本文方法进行排查和解决。

2. 操作步骤

本文以 CentOS7 系统为例。

2.1 查看当前系统语言环境

locale

1614671388860705.png

2.2 查看是否存在中文语言包

查看是否存在中文语言包

locale -a | grep zh_CN

1614671149801034.png

zh_CN.utf8是简体中文,如果没有zh_CN.utf8,就安装语言包,如果存在可以直接设置。

2.3 安装中文语言包

若参考 2.2 节内容,当前系统已有zh_CN.utf8,忽略本节内容。

yum install kde-l10n-Chinese

2.4 临时修改系统默认语言

临时修改,重启服务器之后就会还原为之前的设置。

修改为中文,如下所示:

LANG="zh_CN.UTF-8"

10.png

使用locale查看当前系统语言,已被成功修改。

2.5 永久修改系统默认语言

2.5.1 方法一

vi /etc/locale.conf
LANG=zh_CN.UTF8

如下图所示:

11.png

保存后使用reboot重启系统即可。

2.5.2 方法二

localectl set-locale LANG=zh_CN.UTF8

12.png

使用reboot重启系统即可。

su root 切换用户进入服务器

如何在Linux服务器和windows系统之间上传与下载文件

背景:Linux服务器文件上传下载。

XShell+Xftp安装包(解压即用)百度网盘链接:https://pan.baidu.com/s/1uLW8oQVW7O7uJtGcuT5U8g 提取码: a9fb

方式一、通过Shell

First.

开启本地虚拟机,在Shell中连接本地Linux服务器,其中主机填Linux的IP地址、用户名和密码是Linux的登陆名和密码、其它的保留默认值,确定,然后接受并保存即可。

Second

sz命令发送文件到本地

# sz filename

rz命令本地上传文件到服务器

#rz

执行rz命令后,在弹框中新增要上传的文件即可

方式二、通过Xftp

使用Xftp更方便,也更为所欲为吧。

First

安装下Xftp之后就超简单了,上面链接下载后解压即用,和Shell一样登录方式,然后左右拖拽想要的文件。

如下图:

Besides,若是XShell启动报错,“丢失MSVCR110.dll”,那么就安装下这个玩意吧:

MSVCR110.dll安装包 https://pan.baidu.com/s/1GLM5bQ_O9nNNtcqhl7WlCA  提取码: 4xwy

至于为什么呢,感兴趣的可以看下这一位大牛的Blog,里面有解释 https://blog.csdn.net/franck_lou/article/details/78438268

服务器安装字体

1. 概述

1.1 问题描述

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

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

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

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

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

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

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

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

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

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

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

1.2 原因分析

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

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

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

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

1.3 解决思路

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

注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

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

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 重启服务器

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

总结:

1、首先看是否使用的服务器账号有相应的修改权限;

2、检查中文语言包,检查系统中是否有字体包 zh_cn.UTF-8,且中文语言包是否默认中文。默认中文存在两种设置,a\临时默认中文语言包(重启服务器会恢复);b\始终默认中文语言包,重启之后也不会变化;

3、服务器usr/share/fonts/chinese下是否有安装相应的字体,如没有,把windows下需要的字体拷贝到该文件夹下,并进行缓存等相应问题Linux命令执行。之后重启帆软服务即完成整个操作。亲测有效。

原文地址:https://www.cnblogs.com/purple5252/p/15596993.html