因为工作需要,需要把HTML的网页转换成可以被邮件发送的图片或者PDF.
在网上一通乱找,找到了一个工具,wkhtmltox.
官网地址:https://wkhtmltopdf.org/ 官网上介绍了它大致的作用和使用方法.光看不动手体会不到工具的效果,开始动手,采坑.
在https://wkhtmltopdf.org/downloads.html 下载工具所需要的插件如下图.目前开发环境在Windows上,我下载的是Windows版本.
下载完毕后打开插件查看目录结构如下图.
开始上代码实现功能:
import imgkit
if __name__ =='__main__':
path_wkimg =r'wkhtmltox\bin\wkhtmltoimage.exe' # 工具路径
cfg = imgkit.config(wkhtmltoimage=path_wkimg)
option = {
'--javascript-delay':'2000',
'--enable-local-file-access':None,
'--enable-plugins':None,
'--enable-Javascript':None
}
url ='https://www.jianshu.com/'
# 2、从url获取html,再转为图片
image_path ='test.jpg'
imgkit.from_url(url, image_path, options=option, config=cfg)
运行后结果
算是成功生成了图片,生成PDF也大同小异.
这个工具处理静态HTML网页挺nice的,但之后尝试了许多动态的网站,如Echart图标等网站,有些网址无法生成图片,会有空白或者页面缺少元素的情况,感觉这个工具不是很完美.
经过一番折腾,也参考了官方文档:
https://wkhtmltopdf.org/libwkhtmltox/pagesettings.html#pageImageGlobal
https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
设置生成图片时候的参数,都没有达到预期的效果,如果有小伙伴有幸完美使用了这个工具,通过这个工具可以把任何网站展示内容变为图片求告诉用法.
此工具实现动态加载的网页效果有偏差,之后使用selenium截图的方式替代了.(https://www.jianshu.com/p/ba6565530696 是我对selenium截图的方式的实践)