在桌面操作系统下,手工截取网页的截图非常方便,各种软件插件一应俱全。但是作为一个程序员,有时你也许有这样的需求:服务器端的程序自动对指定的页面进行截图并保存。对于服务器端纯命令模式下如何截图呢?

这里介绍一个非常好用的软件: wkhtmltox (官网 https://wkhtmltopdf.org),它不仅能把 HTML 网页转成图片,也可以转成 PDF。但是这里我们只讲 wkhtmltox 中的下 HTML转图片 功能。

▪ 安装主程序

进入 https://wkhtmltopdf.org/downloads.html ,根据自己的操作系统选择合适的版本并复制链接备用(我们这里选择 CentOS 7 版本)。

进入服务器,开始安装 wkhtmltox
$ cd /usr/local/src/
$ wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
$ yum -y install libX11
$ yum -y install libXext
$ yum -y install fontconfig
$ yum -y install libXrender
$ yum -y install xorg-x11-fonts-Type1
$ yum -y install xorg-x11-fonts-75dpi.noarch
$ rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm
安装完以后,你就可以直接使用 wkhtmltoimage 命令来接网页图片,例如:
$ wkhtmltoimage www.baidu.com baidu.jpg
 

上面的代码直接将 baidu 首页截图并保存到当前目录下,由于服务器纯命令模式下无法直接查看 baidu.jpg,你可以通过 FTP 或其他方式下载到本地后再查看

至此,通过查看 baidu.jpg 你会发现图片里很多地方没有文字,更准确的说是图片里没有中文字体。为了 wkhtmltox 能正常的显示中文,接下来我们就需要安装中文字体。

▪ 安装中文字体

CentOS 下的 wkhtmltox 由于缺少中文字体库,所以对于网页的中文字体就它无法显示并截图。为此我们需要在服务器上安装中文字体。

下载字体:
$ cd /usr/share/fonts/
$ wget https://dlc2.pconline.com.cn/filedown_50601_6620616/SCbKpBBU/yaheiFont_CHS.zip
$ unzip yaheiFont_CHS.zip -d msyh
建立字体缓存
$ mkfontscale
$ mkfontdir
$ fc-cache -fv

OK,完成后你再使用 wkhtmltoimage 命令就能截到含有中文字体的图片了。

▪ 安装 PHP 扩展(PHP 7+)

在用 PHP 来开发网站时,如果我们需要使用 wkhtmltox 功能时,我们就需要在 PHP 里面通过终端命令执行函数 exec() 来调用 wkhtmltox 的相关命令来进行截图,这样很不友好而且有很多潜在问题。

好在很多开发者已经想到这些问题,我们可以使用他们的源码让 wkhtmltox 以扩展的形式嵌入 php 中,这样就便于我们的使用。

注:以下的安装库以及一些代码基于 CentOS 7+ 操作系统和 PHP 7+ 版本。

安装 PHP 扩展库:
$ cd /usr/local/src
$ wget https://github.com/mreiferson/php-wkhtmltox/archive/master.zip
$ wget https://github.com/julego/php-wkhtmltox/archive/julego-php7.zip
$ mv julego-php7.zip php-wkhtmltox-julego-php7.zip
$ unzip php-wkhtmltox-julego-php7.zip
$ cd php-wkhtmltox-julego-php7
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make
$ cp phpwkhtmltox.so /usr/local/php/ext/
编辑 PHP 配置文件,增加扩展:
extension=phpwkhtmltox.so
重启 PHP:
systemctl restart php-fpm.service
PHP 调用 wkhtmltox 代码
wkhtmltox_convert('image', ['in'=>'http://www.baidu.com/','out'=>'baidu.jpg']);

函数原型:wkhtmltox_convert($type, $globalsetting, $objectsetting)

函数说明:http://www.cs.au.dk/~jakobt/libwkhtmltox_0.10.0_doc/pagesettings.html

▪ 介绍在桌面操作系统下,手工截取网页的截图非常方便,各种软件插件一应俱全。但是作为一个程序员,有时你也许有这样的需求:服务器端的程序自动对指定的页面进行截图并保存。对于服务器端纯命令模式下如何截图呢?这里介绍一个非常好用的软件:wkhtmltox(官网 https://wkhtmltopdf.org),它不仅能把 HTML 网页转成图片,也可以转成 PDF。但是这里我们只讲 wkhtmltox 中的下 HTML转图片 功能。▪ 安装主程序进入 https://wkhtmltopdf.org/dow 到官网下载:https://wkhtmltopdf.org/downloads.html 如果官网下载不了,可以去CSDN我的资源下载,这个地址是wkhtmltox-0.12.6-1.centos7.x86_64.rpm和Linux上的一些字体的包 在rpm文件目录使用rpm安装:rpm -ivhwkhtmltopdf的rpm文件名称 如果安装的时候出现依赖问.
文章目录Linux 安装wkhtmltopdf官网地址 http://wkhtmltopdf.org/downloads.html环境确认rpm 安装压缩包安装汉字乱码 Linux 安装wkhtmltopdf 官网地址 http://wkhtmltopdf.org/downloads.html 确认linux操作系统的版本及位数 选择对于的版本 cat /etc/redhat-release # 查看系统的版本 getconf LONG_BIT #查看系统是多少位 [外链图片存失败,源站可
style支持弱,对于表单的样式无法进行更改,就是有背景色,无法去掉等 因此我寻求另外一种更好的变方式,将用户编辑完的HTML页面直接生成PDF,一模一样,即使是样式也一模一样。 各种试,各种查找,最终选择了wkhtmltpdf这个神一样的软件 二、简单介绍 wkhtmltopdf不是程序,而是软件。能够安装在 l...