java生成pdf时汉字乱码,为□-(linux系统)

  • Post author:
  • Post category:java


问题描述: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将项目重新启动,重启后即可生效



版权声明:本文为weixin_44747351原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。