Windows正常转换,在linux中转换就出现小方块
原因分析: 在window下没有问题但是在linux下有问题,就说明不是代码或者输入输出流编码的问题,根本原因是两个平台环境的问题。出现乱码说明linux环境中没有相应的字体以供使用,所以就会导致乱码的出现。
1.windows系统
windows下字体库的位置为C:Windowsfonts,这里面包含所有windows下可用的字体。
2.liunx系统
linux的字体库是 /usr/share/fonts 。
3.将windows下面的字体文件拷贝到linux下面的文件夹可以新建文件夹(安自己喜好建文件夹就好)
比如我的文件夹windows
4.上传之后在liunx系统下更改这些字体库的权限:
sudo chmod 755 /usr/share/fonts/windows/*
5.接着根据当前目录下的字体建立scale文件
sudo mkfontscale
6/接着建立dir文件
sudo mkfontdir
7.然后运行
sudo fc-cache
5.注意在代码里面wordToPdf这个方法中加上
FontSettings.setFontsFolder("/usr/share/fonts/windows"+File.separator, true);//此处处理乱码和小方块
fonts后面的windows是你自己新增文件夹名称
然后重启项目就可以了
如果是docker环境下
重复上面操作,不过进入的服务器是宿主机
docker run -v /usr/share/fonts:/usr/share/fonts ***
docker启动时共享宿主机的字体库重启docker项目即可解决乱码问题