帆軟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命令執行。之后重啟帆軟服務即完成整個操作。親測有效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM