解决Linux html生成图片中文乱码

/ 技术 / 无站内评论 / 118浏览

前言

最近搞了一个需求,功能大概是通过html生成图片。功能是挺简单的吧?

本地测试没什么问题,但是发服务器上,发现html生成的imgae中文乱码。

解决过程

首先google了一圈

发现这个框架比较冷萌,几乎没什么可参考的资料,但是可以搜索同功能的框架(Html2Imgage),应该会出现同样的问题,因为本地没问题,所以可以确定是环境问题。

类似功能的框架,也出现了中文乱码问题,但是图片上渲染的中文是框框的形式。

所以我们也可以排除掉乱码问题,因为乱码应该会展示字体,只是我们读不懂,这个框框说明缺少字库!

google一圈发现的却缺少了中文字体库,生成图片缺少什么字体就全部准备好。

像我这里缺少微软雅黑,宋体等。字体可以到系统C:\WINDOWS\Fonts\下获取,记得字体格式是ttf的,win10是没有的。xp win7有,网上说可以把win10的格式ttc改成ttf,我没试过,你们可以尝试下。

解决

前面找到了问题产生的关键,所以我们要开始动手解决它!

这里因为我的服务器已经装好中文字体插件了,因此直接进入正题,没有的可以看下这个文章https://blog.csdn.net/wlwlwlwl015/article/details/51482065

检查是否安装中文字体插件命令

fc-list

如果没报not common说明安装了。

首先我们要把字体上传到服务器

这里我使用的xshell终端,直接使用rz命令上传文件到服务器。(rz提示找不到命令麻烦百度装下插件)

我们公司对服务器直接上传文件做了限制,不能直接rz上传,只能通过scp的方式上传。

scp上传的思路是:

1.首先登陆跳板机,跳板机的~目录下,是允许直接rz上传文件的,我们rz先把字体上传到~目录下。

  1. scp命令格式

    scp 文件 目标服务器帐号@目标服务器:路径

  2. 把字体复制到指定目录 再使用sudo cp 到目标路径

  3. 路径1:/usr/share/fonts (系统字库路径)把所有字体都复制到该目录下

  4. 路径2:java

    1. 执行命令 echo $JAVA_HOME 找到java安装目录

    2. 复制到安装路径的/jre/lib/fonts/目录下

    3. fonts下创建fallback目录

    4. 复制所有字体到fallback目录下

6.刷新系统字体缓存(重要)

fc-cache

7.查看安装是否成功

fc-list

8.配置tomcat

在tomcat启动脚本中增加配置(vim startenv.sh )

export LANG=en_US.utf-8

重启Tomcat 搞定!!!!

召唤蕾姆
琼ICP备18000156号

鄂公网安备 42011502000211号