使用wkhtmltopdf/image把HTML页面转换成PDF/image文件

我能想到的使用场景主要是生成网站的缩略图,至于生成PDF,我暂时没这个需求,我主要用的是其中的wkhtmltoimage工具。测试的环境是centos7 64位

安装

1、下载最新安装包并安装  https://wkhtmltopdf.org/downloads.html

centos

wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos7.x86_64.rpm
rpm -ivh  wkhtmltox-0.12.6-1.centos7.x86_64.rpm

Debian/Ubuntu

wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
dpkg -i ./wkhtmltox_0.12.6.1-2.jammy_amd64.deb

安装过程中如果提示缺依赖,缺什么装什么

2、安装完成就可以使用了

/usr/local/bin/wkhtmltoimage --quality 88 https://baidu.com screen.png

这是最简单的一种,可以自己加参数控制图片的宽度和高度等

中文字符问题

最开始用的时候中文字符显示为了方块,这是因为缺少中文字体。

可以将windows系统中simsun.ttc,simsun.ttf的复制到 /usr/share/fonts/chinese 目录

chinese目录要自己建,字体懒得去翻文件夹的可以直接下载

建立字体缓存

mkfontscale
mkfontdir
fc-cache -fv

这时再试一下,问题应该已经解决了。

异步加载的网页截屏

现在有不少网站使用了异步加载的技术,使用上面的命令去截屏可以不完整,需要加上适当的延迟,以便截取的页面展示完整

/usr/local/bin/wkhtmltoimage --javascript-delay 5000 --quality 88 https://baidu.com screen.png