linux上将html转为image,html包含的中文无法正确识别的解决办法
在使用linux部署项目的时候,要将包含中文的html转换为image,而html中的字体默认使用的是系统字体,在windows上部署没有问题,但是在linux中运行的时候,由于没有中文相关字体,导致生成的图片中的汉子无法识别。解决办法:1、查看容器支持的字体。fc-list :lang=zh 返回的结果为-bash: fc-list: command no...
在使用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 |
更多推荐
所有评论(0)