描述:最近在项目中使用Aspose.word将word转pdf时出现中文乱码问题,在window平台下转换没有问题,中文也不会出现乱码。但是将服务部署在服务器linux上,转换出来的PDF中文就出现了乱码,变成一个个的小方格,小编进行远程调试后发现,在生成word文件的时候没有发生乱码,而是从DOC文件转换成PDF时就会发送乱码,对此在这里记录一下解决方案。
原因:在window下没有问题但是在linux下有问题,就说明不是代码或者输入输出流编码的问题,根本原因是两个平台环境的问题。出现乱码说明linux环境中没有相应的字体以供使用,所以就会导致乱码的出现。将转换无问题的windos主机中的字体拷贝到linux平台下进行安装,重启服务器后转换就不会出现乱码了。
解决方法:将windows中的常用字体(选择显示的)放到Linux服务器上。window上的字体在”C:\Windows\Fonts“目录下,linux的字体库是/usr/share/fonts 。如果没有大家可以创建一个。
1、如果没有目录,可以使用下面命令
# mkdir /usr/share/fonts
2、在该目录下新建一个目录,比如目录名叫 windows(根据个人的喜好,自己理解就行,当然这里是有权限要求的,你可以用sudo来执行)。
# mkdir /usr/share/fonts/windows
3、然后将 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
注:如果没有mkfontscale这个命令,可以使用”yum install mkfontscale“获取
接着建立dir文件
# mkfontdir
然后运行
# fc-cache(如果命令不存在,直接重启就可以了)