問題背景
項目需要導出Word文檔、Pdf文檔。Word文檔是使用easypoi根據導出模板生成的,其中的圖表使用JFreeChart繪製。Pdf文檔是使用aspose-words將Word文件流轉換成Pdf文件流。
問題描述
1. 導出Word文檔時,JFreeChart圖表上的中文亂碼,Windows系統下沒問題。
2. 導出Pdf文檔時,正文的中文和JFreeChart圖表的中文亂碼,Windows系統下沒問題。
系統環境
CentOS 6
問題解決
1. JFreeChart圖表中文亂碼
在生成JFreeChart圖表的時候,我指定了圖表的標題使用宋體。而JVM的字體庫中,並沒有該字體,這就需要將該字體添加到JVM的字體庫中
# Windows操作系統中,在C:\Windows\Fonts目錄下,找到simsun.ttc宋體字體文件
# Linux系統中,在%JAVA_HOME%/jre/lib/fonts目錄下,新建目錄fallback
# 將simsun.ttc字體文件複製到fallback目錄下,重啓tomcat即可
2. Pdf正文中文亂碼
這個問題是由於Linux中沒有對應的字體供使用,那就需要把Windows下常用的中文字體安裝到Linux操作系統。
# Windows操作系統中,在C:\Windows\Fonts目錄下,找到所有的中文字體文件,放到臨時的新建文件夾下
# Linux操作系統中,在/usr/share/fonts目錄下,新建目錄windows
# 將中文字體文件複製到新建的windows目錄中
# 改變字體文件的權限,執行命令chmod -R 755 /usr/share/fonts/windows/
# 進入字體庫文件夾,執行命令cd /usr/share/fonts/windows
# 根據當前目錄下的字體建立scale文件,執行命令mkfontscale
# 建立dir文件,執行命令mkfontdir
# 執行命令fc-cache,重啓tomcat即可