ThinkPHP下使用wkhtmltopdf和phpwkhtmltopdf把网页转为pdf文件

最初发表于: 2019-10-11 21:20:08

第一部分 wkhtmltopdf的部署, 参见这篇文章

第二部分 用Composer给ThnkPHP安装phpwkhtmltopdf插件

可以将Composer设置为国内镜像, 以免下载卡住; 就像这样

composer config -g repo.packagist composer https://packagist.phpcomposer.com

进入ThinkPHP的根目录, 就是vendor的上层目录, 在此执行如下指令

composer require mikehaertl/phpwkhtmltopdf

第三部分 Composer报错的处理

如果运行Composer时出现以下报错:Warning: putenv() has been disabled for security reasons in…

那么可能是你的php.ini中禁用了某些函数, 可以编辑你的php.ini

->搜索 disable_functions

->找到被禁用的函数, 将其删除

第四部分 使用phphtmltopdf

然后就可以用了, 示例代码如下

<?php

namespace app\index\controller;

use app\index\controller\IndexBase;
use mikehaertl\wkhtmlto\Pdf;//关键代码: 引用phphtmltopdf

//这是一个叫做Book的控制器
class Book extends IndexBase
{

    //在这个方法来调用
    public function savePdf()
    {
       $pdf = new Pdf('http://www.baidu.com');

        if (!$pdf->saveAs('page1.pdf')) {
            $error = $pdf->getError();
        }
    }
}

这样, 我们调用/index/book/savepdf, 就会在ThinkPHP的/public目录下生成一个叫page1.pdf的文件, 而它就是由http://www.baidu.com转码成pdf而得的

但是我第一次运行它时, 系统是报错的, 系统这么说: proc_open() has been disabled for security reasons; 解决方法是像本文第三部分那样, 并重启PHP服务.