使用com.aspose.words将word模板转为PDF文件时,在开发平台window下转换没有问题,中文也不会出现乱码。但是将服务部署在正式服务器(Linux)上,转换出来的PDF中文就出现了乱码。
问题原因分析
在window下没有问题但是在linux下有问题,就说明不是代码或者输入输出流编码的问题,根本原因是两个平台环境的问题。出现乱码说明linux环境中没有相应的字体以供使用,所以就会导致乱码的出现。将转换无问题的windos主机中的字体拷贝到linux平台下进行安装,重启服务器后转换就不会出现乱码了。
window字体复制到linux环境并安装
Windows下字体库的位置为C:\Windows\fonts,这里面包含所有windows下可用的字体
linux的字体库是 /usr/share/Fonts
在该目录下新建一个目录,比如目录名叫 windows,然后将 windows 字体库中你要的字体文件复制到新建的目录下(只需要复制*.ttc,和*.ttf的文件)
cp *.ttc /usr/share/fonts/windows/
cp *.ttf /usr/share/fonts/windows/
更改这些字体库的权限
chmod 755 /usr/share/fonts/windows/*
然后进入Linux字体库:
cd /usr/share/fonts/windows/
接着根据当前目录下的字体建立scale文件
mkfontscale
接着建立dir文件
mkfontdir
然后运行
fc-cache