为什么要引入mPDF?
  1. 需要将HTML文档生成pdf供客户端下载或预览;
  2. 前端可以直接使用html2canvas,JS前端插件。html2canvas实际上是截图,即将前端页面截图成为图片然后保存为pdf,文档中的文字无法复制,且在支持自动分页,大数据量的情况下,使用不佳;
  3. mPDF,支持从服务器端渲染,按照需求在客户端进行预览、下载等设置;
  4. Software: mPDF, Unicode-HTML Free PDF generator *
    Version: 6.0

    使用composer安装;或者直接将mPDF项目包全部拷贝至资源引入目录,此处不再赘述。

    /*打印PDF详情页
    * $url, 域名;
    * $pro_id, 项目Id;
    * $pro_types,机构类型;
    * $waterMark,水印文字;
    * $pro_serial,项目编号;
    function printPdf($url, $pro_id, $pro_types, $waterMark, $pro_serial)
        require_once("libs/mpdf/mpdf.php");
        $mpdf = new mPDF('utf-8', 'A4', '', '宋体', 0, 0, 20, 10);
        //添加水印;
        $mpdf->SetWatermarkText($waterMark, 0.1);//水印文字,透明度
        $mpdf->showWatermarkText = true; //开启水印
        if (preg_match("/([\x81-\xfe][\x40-\xfe])/", $waterMark, $match)) {
            $mpdf->watermark_font = 'GB';
        //获取内容;
        $mpdf->useAdobeCJK = true;
        $html = file_get_contents($url . '?m=Surveyor&a=surveyorDetail&act=detail&pro_id=' . $pro_id . '&pro_types=' . $pro_types);
        //设置PDF页脚内容
        $footer = '<table width="100%" style="vertical-align: bottom; font-size: 9pt; color: #000;"><tr style="height:30px"></tr><tr><td width="10%"></td><td width="80%" align="center" style="font-size:14px;color:#000"></td><td width="10%" style="font-size:14px;color:#000;">页码: {PAGENO} / {nb}</td></tr></table>';
        //添加页眉和页脚到pdf中
        $mpdf->SetHTMLFooter($footer);
        //设置pdf显示方式
        $mpdf->SetDisplayMode('fullpage');
        //创建pdf文件
        $mpdf->WriteHTML($html);
        //输出pdf
        $mpdf->Output($pro_serial . '.pdf', 'I');//'D';下载模式
        exit;
    
    $mpdf = new mPDF('utf-8', 'A4', '', '宋体', 0, 0, 20, 10);