php使用wkhtmltopdf将html转为pdf

首先需要安装wkhtmltopdf插件。安装参考链接:https://mp.csdn.net/postedit/103162085

生成pdf选择wkhtmltopdf的原因是,wkhtmltopdf对样式能够很好的体现。mpdf对样式的呈现不足。

php后台代码调用wkhtmltopdf,将静态html转为pdf。

//生成pdf的函数,$html为需要写入到pdf文件里的字符串
function generatePdf($html){
//将字符串$html里的内容写入到$filename_path文件里,该文件为html
file_put_contents("{$filename_path}.html", $html);
//wkhtmltopdf将生成的html文件转为相应的pdf
shell_exec("wkhtmltopdf -q {$filename_path}.html {$filename_path}.pdf");
//判定指定的路径下是否存在相应的pdf
if(file_exists("{$filename_path}.pdf")){
       //设置header信息
       header("Content-type:application/pdf");
       //设置下载的文件名称
       header("Content-Disposition:attachment;filename={$filename}.pdf");
        //火狐浏览器下文件名设定
       if (stripos($_SERVER["HTTP_USER_AGENT"], 'Firefox')) {
           header("Content-Disposition: attachment;filename*={$filename}.pdf");
       }
        //safari浏览器默认不支持汉字名,所以safari下文件名设为拼音
       if (stripos($_SERVER["HTTP_USER_AGENT"], 'Macintosh')) {
            //通过一个汉字转为拼音的共同函数,获取汉字相应的拼音,参考链接:https://mp.csdn.net/postedit
            $pinyin = new Pinyin();
            $name_py = $pinyin->getpy($name,true,true) . '\'s ';
            $filename = '2-' . $name_py;
             header("Content-Disposition: attachment; filename={$filename}.pdf");
            }
            //下载文件到本地
            echo file_get_contents("{$filename_path}.pdf");
            //删除下载Pdf产生在服务器上的临时文件
            unlink("{$filename_path}.pdf");
            unlink("{$filename_path}.html");
        }
        exit;
}

 

 

你可能感兴趣的:(php)