用java将html转换为图片
需求
公司网站需要增加一个分享功能,其一就是将网页生成图片,然后供用户分享或保存
实现
java处理图片这一块比较弱,但是还是有些还可以的框架的。这里用到的是CSSBOX,这个框架使用起来比较简单并且效果还算不错。为了方便大家下载使用,我将它以及需要依赖的jar存到了七牛上,大家可以点击下载 CSSBOX依赖jar
下载下来之后,用IDE导入pom.xml文件,将项目需要依赖的文件下载完毕后,就可以运行Demo了。
稍作修改,就可以实现将网页转图片,传递一个url地址,返回一张图片
遇到的问题
测试的时候我实在本地Mac机器上测试的,生成的图片除了一些样式不对之外,其他可以说还行,但是当我部署到Linux服务器后,转换出来的图片,文字都变成空的了。
一开始我以为是服务器性能问题,毕竟是双核4G的,可能性能不够会导致文字渲染不出来,但是仔细看了看,其实并不是这个原因。搜索 Linux java 乱码 这几个关键字后,发现有人也遇到这问题,原因是 Linux 中缺少中文字体。
解决方案
- 在网上下载中文字体,我这下载的是微软雅黑msyh.rar
- 将msyh.rar放入 /usr/share/fonts/zh_CN zh_CN 文件夹需要自己创建。
- cd /jre/lib/fonts
- mkdir fallback
- 将msyh.ttf字体复制到fallback中
OVER
截图的效果跟网站的css和js有关,可能效果会不好,但是对于我公司的需求来说,已经可以了。并且这个转换过程比较耗时,因为要解析网站结构,然后再处理成图片,这个工作量蛮大的。