php pdf首页截图,Linux+PHP+Wkhtmltopdf 实现页面截图功能

本文介绍了如何在Linux系统中利用PHP和Wkhtmltopdf工具进行网页截图。首先,通过命令行下载并安装Wkhtmltopdf,然后配置字体以解决中文显示问题。接着,通过PHP的exec函数执行截图命令,并提供了测试示例。最后,展示了如何将此功能应用于数据库中的URL列表,批量生成截图。文章还提到了使用定时任务来定期执行此脚本。
摘要由CSDN通过智能技术生成

Linux+PHP+Wkhtmltopdf 实现页面截图功能

6cd5e4fd49658da7be73f2e8e3760c00.png

1年前

阅读 3330

评论 0

喜欢 0

### 一、安装Wkhtmltopdf

```

# 下载安装包

wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

# 解压

tar xvfJ wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

# 进入目录

cd wkhtmltox/bin

# 设置权限

sudo mv ./wkhtmltopdf /usr/bin/wkhtmltopdf

sudo chmod +x /usr/bin/wkhtmltopdf

# 安装https支持

yum install urw-fonts libXext openssl-devel

```

### 二、配置字体文件,解决中文空白,乱码

下载中文字体文件,上传至`/usr/share/fonts`目录下。

`链接: https://pan.baidu.com/s/1agam7iNLFT5sLiRettbhMg 提取码: ksdk`

### 三、测试下载截图

在linux中输入以下命令,测试截图:

```

/root/wkhtmltox/bin/wkhtmltoimage http://www.baidu.com/ /root/wkhtmltox/bin/1.jpg

```

### 四、使用PHP执行截图

```

date_default_timezone_set('PRC');

error_reporting(0);

// 无限长等待时间

set_time_limit(0);

// 后台运行

ignore_user_abort();

ob_start();

//引入数据库文件

require ('/www/wwwroot/img/Db.php');

// 链接数据库

$conn=link_db();

$select='select * from img where url="" order by id ASC limit 0,10';

$lists=$conn->query($select);

for ($i=0;$inum_rows;$i++) {

$v = $lists->fetch_assoc();

$path = '/www/wwwroot/img/list/'.$v['id'].'.jpg';

$url = '/img/list/'.$v['id'].'.jpg';

//如果将输出的文件名设置为'-',则直接返回文件数据流

exec('sudo -i /root/wkhtmltox/bin/wkhtmltoimage --width 1920 '.$v['href'].' '.$path);

$sql = 'UPDATE img SET url="'.$url.'",time2='.time().' WHERE id = '.$v['id'].';';

$conn->query($sql);

}

mysqli_close($conn);

```

原理很简单,就是我们要弄个截图的队列,然后PHP利用`exec`去执行linux命令进行截图生成。

一般情况下,php在web端要想直接运行linux命令是不行的,因为用户组不一样,所以我们可以选择用定时器,定时运行这个文件。

```

* /1 * * * * php /www/wwwroot/img/dow_img.php

```

© 著作权归作者所有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值