linux上将html转为image,html包含的中文无法正确识别的解决办法

在使用linux部署项目的时候,要将包含中文的html转换为image,而html中的字体默认使用的是系统字体,在windows上部署没有问题,但是在linux中运行的时候,由于没有中文相关字体,导致生成的图片中的汉子无法识别。

解决办法:

1、查看容器支持的字体。

    fc-list :lang=zh

        返回的结果为-bash: fc-list: command not found

        说明没有安装字体管理,需要安装字体库

2、安装字体库。

yum -y install fontconfig

  安装完成后,在/usr/share目录下就能看到fontconfig、fonts文件夹

3、将下载下来的字体ttc、ttf文件拷贝到容器的/usr/share/fonts文件中。

cp msyh.ttf 容器:/usr/share/fonts

4、然后重启linux,通过fc-list :lang=zh命令就可以看到安装的中文字体。

   /usr/share/fonts/msyh.ttf: Microsoft YaHei,微软雅黑:style=Regular

 

使用Docker容器的同理,可以将上面命令写入dockerfile,下面附上我的dockerfile

FROM java:8
EXPOSE 8282

VOLUME /tmp
ADD uhome-emailjob.jar /app.jar
ADD msyh.ttf /usr/share/fonts
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN bash -c 'touch /app.jar'
ENV JAVA_OPTS="-Dfile.encoding=UTF8  -Duser.timezone=GMT+08"
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

由于我的docker镜像已经安装了字库,只用将字体拷贝到相应目录下即可

加上这一行ADD msyh.ttf /usr/share/fonts即可

附字体对应文件名

字体 文件名 字体 文件名
宋体 SIMSUN.TTF/simsunb.ttf 黑体 simhei.ttf
仿宋 simfang.ttf 楷体 simkai.ttf
方正舒体 FZSTK.TTF 方正姚体 FZYTK.TTF
隶书 SIMLI.TTF 华文彩云 STCAIYUN.TTF
华文细黑 STXIHEI.TTF 华文行楷 STXINGKAI.TTF
华文新魏 STXINWEI.TTF 华文中宋 STZHONGS.TTF
幼圆 SIMYOU.TTF 华文琥珀 STHUPO.TTF
华文楷体 STKAITI.TTF 华文隶书 STLITI.TTF
华文宋体 STSONG.TTF 新宋体 NSIMSUN.TTF

你可能感兴趣的:(经验)