使用net.sf.cssbox实现将html转换为图片(解决中文乱码)
//引入依赖
<dependency>
<groupId>net.sf.cssbox</groupId>
<artifactId>cssbox</artifactId>
<version>5.0.0</version>
</dependency>
ImageRenderer render = new ImageRenderer();
String url = https://editor.csdn.net/md/?articleId=139278288";/*网络链接的html*/
File file = new File("D://2.png");
FileOutputStream out = new FileOutputStream(file);/*生成文件的路径*/
render.renderURL(url, out);/*将url网页写入生成文件中*/
out.close();
代码很简单,在windous上很快就实现了,主要费时在linux上输出的中文都成了方块,看了很多文章,有说编码问题的,有说字体的,但是他们没有一个是把服务部署在docker环境里的,解决问题的关键也就是这
首先确认编码(docker 镜像中) locale -a
如果不是utf-8就要设置export LANG=C.UTF-8,我这原本就是没错的
我错在了字体只放到了服务器,其实应该也放一份到镜像中(路径:/usr/share/fonts/)
docker cp /usr/share/fonts/Fonts 镜像服务名:/usr/share/fonts/
复制完用fc-list查看是否复制成功
有时候复制完需要重启一下服务才生效