问题描述:Linux环境中Java生成pdf时,图片中的汉字位置都显示为方框,乱码、方框、问号
原因分析:经排查日志,发现是在生成的时候缺少对应的字体库
1:由于项目由原来的Windows系统换到了Linux系统,所以部分系统环境不一致
2:不仅是缺少默认的 宋体 字体,实际上所有的中文字体都没有,所以需要安装新的字体库
3:也有网友缺少的是黑体,Linux环境下"Font font = new Font(“黑体”, Font.BOLD, 18)"[BufferedImageGraphicsdrawString]中文乱码,在Windows下不会乱码,但在Linux下Nginx和Tomcat部署后出现乱码、方框、问号等等。而本地运行环境为Windows,线上为Linux的Ubuntu系统
解决方法:
1:查看【/usr/share/fonts】目录,新系统中无 fonts 文件夹。无文件夹则手动创建 fonts 文件夹。
2:下载所需要的字体,本系统所需为 simsun.ttc (新宋体)和 simsun.ttf(宋体),黑体为simhei.ttf
所需要的字体可以在Windows的【C:\Windows\Fonts】文件夹中查看、寻找
3:进入到服务器的【/usr/share/fonts】目录下,新建【chinese】文件夹,进入其中然后新建【TrueType】文件夹
进入文件夹:cd /usr/share/fonts/chinese/TrueType/
4:上传刚才挑选的字体进入这里
上传命令:rz
5:最后在此目录下,执行"fc-cache -fv",进行扫描字体并生成字体信息的缓存,新启动的应用程序就可以使用这个字体了
6:此时线上还无法使用该字体,需要重启Tomcat将项目重新启动,重启后即可生效