HTML转换成PDF 指定网页转换PDF(实际上是截取网页) pdf.js , dompdf , html2ps , wkhtmltopdf

开发背景

        在实际开发过程中,有一些特殊需要:需要把相关网页转换成PDF格式,作为资料留存

        下面讲一下我所遇到的相关需求:证书的发放,在前期的需求调研的时候甲方提出一个需求,电子证书需要实时生成并且通过邮件发送,于是我开始找相关的资料开始学习,于是找到了以下几个:

1.pdf.js

        缺点:分页时会造成文字或表格截断等,所以自己要使用css去规范网页在一个页面中,所以只适合单网页生成pdf,这个看自己需求来顶

2.dompdf

        要求:该库要求PHP> = 5.0,并且已启用mbstring和DOM扩展。 它还需要一些字体,这些字体通常在大多数计算机上都可用。

        示例

        //引入资源文件

        require_once "dompdf_config.inc.php";

        //初始化对象

        $dompdf = new DOMPDF();

        $html = <<<'ENDHTML'

                <html>

                        <body>

                        <h1>test</h1>

                        </body>

                </html>

        ENDHTML;

//载入HTML资源文件

$dompdf->load_html($html);

//重载

$dompdf->render();

//输出

$dompdf->stream("test.pdf");

        总结:大型表或者长网页很容易导致内存不足。 

3.html2ps

        示例

        //引入资源文件

        require_once "html2fpdf.php";

        //初始化对象

        $pdf=new HTML2FPDF();

        //加载实例方法

        $pdf->AddPage();

        //获取生成页面

        $fp = fopen("test.html","r");

        //获取生成页面参数

        $strContent = fread($fp, filesize("sample.html"));

        //关闭

        fclose($fp);

        //加载实例方法

        $pdf->WriteHTML($strContent);

        //输出

        $pdf->Output("test.pdf");

4.wkhtmltopdf

        示例

         //需要生成pdf的页面(注意:在自己的项目中,该页面一定要是不需要有登录凭证的页面)

        $http = “https://www.baidu.com”;

        //指定生成pdf的存放地址(注意:最好是项目的绝对路径:也就是带域名的全路径)

        $root_url = ””’;

        //执行pdf生成

        shell_exec("wkhtmltopdf {$http} {$root_url}");

总结:单页面或者长度在网页上一页的话适用于  pdf.js 或者  dompdf

           页面数据较多或者表格数据大适用于  html2ps   或者    wkhtmltopdf

            选择其实并没有一个固定的方法,适用自己并且灵活使用才是最好了

参考主方法:

public function wkhtmltopdf(){
    //设置最大时间
    set_time_limit(0);
    //参数
    $uid= 1;
    //固定参数(需要装换的页面的地址:一定是不需要登录的页面,比如百度)
    $http = "";
    //固定参数
    $realname = '';
    //pdf格式
    $name = $uid.'_info.pdf';
    //文件夹地址
    $path =  '';
    //创建文件夹
    if (!is_dir($path)){
        mkdir($path, 0777, true);
        chmod($path,0777);
    }
    $root_url = $path .'/'.$name;
    //引用三方插件生成pdf(注意,大页面可能有加载时间,转换可能不完全,需要设置睡眠时间)
    exec("wkhtmltopdf {$http} {$root_url}");
    $url = config_item('hos_base_url').'/upload/training/file/'.$uid.'/'.$name;
    $name = $realname.'-证件资料.pdf';
    $_name = iconv("UTF-8", "GB2312//IGNORE", $name);
    $_name  = urlencode($_name);
    //输出结果
    var_dump(compact('url','name','root_url','_name'));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值