首页 > 其他 > 详细

使用puppeteer-renderer生成pdf

时间:2021-05-26 00:55:13      阅读:28      评论:0      收藏:0      [点我收藏+]

主要功能:使用 puppeteer-renderer 抓取页面生成pdf。

我以前也使用过mpdf,实现起来确实有点费时费力,而使用这个组件就比较快乐了。

 

我这里使用docker安装的服务

docker run -d --name renderer -p 3000:3000 zenato/puppeteer-renderer

使用方式是

直接请求安装服务器对应的3000端口(可以自由设定),例如抓取百度页面生成pdf,直接展示。

安装服务的主机地址 : 对应端口 ? url = 抓取的url页面地址

http://serverHost:3000?url=https://www.baidu.com

如果不想展示直接下载

http://serverHost:3000?type=pdf&url=https://www.baidu.com

当然很多场景下我们是异步生成pdf,然后存储的,我这里使用php抓取对应文件的代码为

    /**
     * 渲染pdf和图片
     * @param $api 上面的生成pdf的url带type
     * @param $filePath 想要存放的位置
     * @return bool|false|int
     * @throws GuzzleException
     */
    public static function creatPDF($api,$filePath){
        ini_set(memory_limit, 1000M);
        $httpClient = new Client([
            timeout => 600
        ]);
        $options[verify] = false;
        $data = $httpClient->request(GET, $api, $options);
        $result = $data->getBody()->getContents();
        if($result){
            $res =  file_put_contents($filePath,$result);
            var_dump($res);
            return $res;

        }else{
            var_dump(请求pdf Service 失败!);
            return false;
        }

    }

注意:当连接中url参数为公网地址时,可直接抓。但是如果内网配置host的指定地址时,需要在启动docker服务时,指定host

docker run -d --name renderer -p 3000:3000 --add-host 抓取页面的URL:抓取页面的IP zenato/puppeteer-renderer

 

大致流程示意

技术分享图片

 

使用puppeteer-renderer生成pdf

原文:https://www.cnblogs.com/haizizhu/p/14811304.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!