Linux下导出Word、Pdf时中文乱码问题

问题背景

项目需要导出Word文档、Pdf文档。Word文档是使用easypoi根据导出模板生成的,其中的图表使用JFreeChart绘制。Pdf文档是使用aspose-words将Word文件流转换成Pdf文件流。

问题描述

1. 导出Word文档时,JFreeChart图表上的中文乱码,Windows系统下没问题。

Linux下导出Word、Pdf时中文乱码问题_第1张图片

2. 导出Pdf文档时,正文的中文和JFreeChart图表的中文乱码,Windows系统下没问题。

Linux下导出Word、Pdf时中文乱码问题_第2张图片

系统环境

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即可

 

你可能感兴趣的:(常见问题)