背景

java应用调用开源打印插件打印中文页面的时候,显示空白 7G2LHJTQCLBC6WR8HV.png,但是使用finashell重启应用再次打印同样的页面却可以打印

百思不得其解

照理来说ssh终端不会影响应用的功能,但是事实确实是使用finashell重启应用的时候再次打印可以显示内容,而使用xshell,putty,winscp的命令行重启应用,再打印,打印空白

检查JasperReport6.x配置

叫开发检查这个开源插件的配置,说配置没有问题,而且开发什么win系统本地启动也能打印

检查启动脚本

将启动的shell脚本使用dos2unix统一转化一次,并且将脚本重新保存一次,没有效果

检查linux字体配置

1 查看/usr/share/fonts/chinese路径,发现确实有需要的中文字体文件 image.png 2 设置chown -R 755 /usr/share/fonts/chinese 3 检查/etc/fonts/fonts.confs配置,已经添加了字体文件夹 image.png 4 检查字体文件夹是否已经加载 image.png image.png

最终解决办法

1 安装中文语言包

yum install -y kde-l10n-Chinese

这个后来经测试,再卸载掉也不影响打印,可装可不装吧 2 安装依赖包

yum -y install glibc-common

这个后来经测试,也不影响打印,可装可不装吧

yum -y reinstall glibc-common

3 设置LANG环境变量

vi /etc/profile

添加

export LANG="zh_CN.UTF-8"  
export LC_ALL="zh_CN.UTF-8"

soure /etc/profile

结果验证

经过以上设置后,浏览器再次访问打印中文表单能正常打印 image.png

补充

如果没有按顺序执行相关的字体配置也有可能会有问题,补上以下

cd /usr/share/fonts/Chinese
mkfontscale
mkfontdir
fc-cache

补充2

如果还有问题,可以对比一下使用不同的终端的环境变量设置,如果是使用ssh等远程连接的方式执行脚本需要在要执行的脚本前面加上source /etc/profile以加载当前服务器的环境变量,加载当前服务器的中文编码