php 抓取网页生成图片(如何用PHP扩展网页转换生成为各种格式的图片或者pdf文件)

优采云 发布时间: 2022-01-22 05:07

  php 抓取网页生成图片(如何用PHP扩展网页转换生成为各种格式的图片或者pdf文件)

  我们在实际项目开发中经常会遇到这种需求,从特定网页生成图片用于分享等用途。这时候,我们就可以使用这个PHP扩展,轻松将网页转换成各种格式的图片或pdf文件。我们来看看如何实现它?

  本教程的主角是 wkhtmltopdf。我们先简单了解一下:

  wkhtmltopdf 是一个开源的、简单有效的命令行 shell 程序,可以将任何 HTML(网页)转换为 PDF 文档或图像(jpg、png 等)。

  wkhtmltopdf 是用 C++ 编写的,并在 GNU/GPL(通用公共许可证)下发布。它使用 WebKit 渲染引擎将 HTML 页面转换为 PDF 文档,而不会损失页面的质量。这是一个非常有用且可靠的解决方案,用于实时创建和存储网页快照。

  该程序的特点如下:

  开源和跨平台。使用 WebKit 引擎将任何 HTML 网页转换为 PDF 文件。为页眉和页脚添加了选项目录生成 (TOC) 选项。提供批处理模式转换。通过绑定 libwkhtmltox 支持 PHP 或 Python。

  

  首先我们需要在我们的服务器上安装linux下的webkit内核libwkhtmltox,根据我们的服务器配置选择合适的安装包:

  需要注意的是libwkhtmltox的当前版本已经是0.13了,但是我在CentOS下安装了libwkhtmltox-0.116.2之后,当我把网页转换成图片的时候,我搞错了,最后选择了0.10版本,还是比较稳定的。

  13版安装方法:

  wget https://bitbucket.org/wkhtmlto ... 4.rpm

  然后执行:

  [root@KaiBoss_4_45 ~]# rpm -ivh wkhtmltox-0.13.0-alpha-7b36694_linux-centos6-amd64.rpm

  如果在安装过程中出现如下错误,可以通过以下方法解决,只需安装缺少的依赖即可!

  [root@KaiBoss_4_45 ~]# rpm -ivh wkhtmltox-0.13.0-alpha-7b36694_linux-centos6-amd64.rpm <br />

error: Failed dependencies:<br />

icu is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64<br />

xorg-x11-fonts-75dpi is needed by wkhtmltox-1:0.13.0_alpha_7b36694-1.x86_64<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

  [root@KaiBoss_4_45 ~]# yum search icu<br />

[root@KaiBoss_4_45 ~]# yum install icu.x86_64<br />

<br />

[root@KaiBoss_4_45 ~]# yum search 75dpi<br />

[root@KaiBoss_4_45 ~]# yum install xorg-x11-fonts-75dpi.noarch<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

  [root@KaiBoss_4_45 ~]# rpm -ivh wkhtmltox-0.13.0-alpha-7b36694_linux-centos6-amd64.rpm <br />

Preparing... ########################################### [100%]<br />

1:wkhtmltox ########################################### [100%]<br />

[root@KaiBoss_4_45 ~]# <br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

  如果看到上面的结果,就说明安装成功了!

  10 稳定版安装方法:

  [root@KaiBoss_4_45 ~]#mkdir libwkhtmtox<br />

[root@KaiBoss_4_45 ~]#cd libwkhtmtox<br />

[root@KaiBoss_4_45 libwkhtmtox]# tar jxvf libwkhtmltox-0.10.0_rc2-amd64.tar.bz2<br />

[root@KaiBoss_4_45 libwkhtmtox]# cd lib<br />

[root@KaiBoss_4_45 lib]# cp libwkhtmltox.so /usr/local/lib/<br />

[root@KaiBoss_4_45 lib]# cd ../include/<br />

[root@KaiBoss_4_45 include]# cp -R wkhtmltox /usr/local/include/<br />

<br />

<br />

<br />

<br />

<br />

  接下来需要安装phpwkhtmltox这个php扩展,它可以调用webkit内核将网页转换成各种格式的图片或者pdf。

  这里需要注意的是,如果是PHP7,需要安装PHP7版本对应的扩展包。

  [root@KaiBoss_4_45 ~]#unzip php7-wkhtmltox-master.zip<br />

[root@KaiBoss_4_45 ~]#cd php7-wkhtmltox-master<br />

[root@KaiBoss_4_45 ~]#phpize<br />

[root@KaiBoss_4_45 ~]#./configure<br />

[root@KaiBoss_4_45 ~]#make install

  

  接下来,我们修改我们的 php.ini 配置文件,添加扩展文件:

  extension=phpwkhtmltox.so

  然后,重新加载系统动态链接库(重要,否则PHP无法完成扩展phpwkhtmltox),检查是否添加成功:

  [root@platform tmp]#ldconfig<br />

[root@platform tmp]#php -m

  然后,您可以编写一个 php 脚本来测试该功能:

  测试生成的图像:

  以下是百度网页生成的结果

  

  

  测试生成pdf:

  如果你发现生成的图片或pdf中出现中文乱码,需要让CentOS支持中文:

  [root@KaiBoss_4_45 ~]#yum groupinstall chinese-support

  将字体文件复制到/usr/share/fonts/xxx,其中xxx为新建的字体文件夹,如msyh

  [root@KaiBoss_4_45 ~]#cd /usr/share/fonts/<br />

[root@KaiBoss_4_45 ~]#mkdir msyh<br />

[root@KaiBoss_4_45 ~]#cd msyh

  创建字体缓存

  [root@KaiBoss_4_45 ~]#mkfontscale<br />

[root@KaiBoss_4_45 ~]#mkfontdir<br />

[root@KaiBoss_4_45 ~]#fc-cache -fv

  PS:让 Linux CentOS 支持 Consolas 字体(技术博客可能会发布示例代码,大多数 wordpress 技术博客都会安装 SyntaxHighlighter 插件,并且插件代码显示该字体是 Consolas 的首选字体,所以为了html转图片示例代码看起来不错,我们还需要让linux支持Consolas字体)

  从本地windows下载或复制consolas(注意windows系统复制的文件应该有4个),上传到linux服务器。将字体文件复制到/usr/share/fonts/xxx,其中xxx为新建字体文件夹,如Consolas

  [root@KaiBoss_4_45 ~]#cd /usr/share/fonts/<br />

[root@KaiBoss_4_45 ~]#mkdir Consolas<br />

[root@KaiBoss_4_45 ~]#cd Consolas

  创建字体缓存

  [root@KaiBoss_4_45 ~]#mkfontscale<br />

[root@KaiBoss_4_45 ~]#mkfontdir<br />

[root@KaiBoss_4_45 ~]#fc-cache -fv

  你完成了!

  wkhtmltox官网:

  下载所有历史版本:... ME.md

  wkhtmltox-0.13.0-alpha-7b36694_linux-centos6-amd64 下载地址(百度网盘):

  稳定版0.10版本libwkhtmltox-0.10.0_rc2-amd64.tar.bz2下载地址(百度网盘):

  (非PHP7)php-wkhtmltox-master下载地址(百度网盘):

  (PHP7)php7-wkhtmltox-master下载地址(百度网盘):

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线