wkhtmltopdf 最好用Html转pdf的工具
<?php //转成pdf $html=$_POST['html']; //Turn on output buffering ob_start(); $html=' <link href="http://www.jb51.net/article/css/common.css" > <link href="http://www.jb51.net/article/css/myCenter.css" > <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'.$html; //这儿可以引入生成的Html的样式表 路径可以是绝对路径也可以是相对路径,也可以把样式表文件复制到临时html文件的目录下 即这儿的demo文件目录下(默认) 也可以直接把样式写在html页面中直接传递过来 //$html = ob_get_contents(); //$html=$html1.$html; $filename = "hld"; //save the html page in tmp folder 保存的html临时文件位置 可以是相对路径也是可以是绝对路径 下面用相对路径 file_put_contents("{$filename}.html", $html); //Clean the output buffer and turn off output buffering ob_end_clean(); //convert HTML to PDF shell_exec("wkhtmltopdf -q {$filename}.html {$filename}.pdf"); if(file_exists("{$filename}.pdf")){ header("Content-type:application/pdf"); header("Content-Disposition:attachment;filename={$filename}.pdf"); echo file_get_contents("{$filename}.pdf"); //echo "{$filename}.pdf"; }else{ exit; } ?> 点击页面中的下载按钮, 是不是弹出一个下载提示,打开下载的pdf,是不是和网页上的样式一模一样呢, 再打开Php文件中的文件保存位置,看看是不是多了两个临时文件呢? 这两个临时文件在哪儿,你的css就得在哪儿,或者你直接使用相对路径,引用其他文件中的css样式也可以的,最简单的就是把css样式直接写在要转成pdf的html页面中。 如果存在样式没有,那就是你的样式路径没有写对,在检查一下就可以了! 四,解决分页问题 wkhtmltopdf 很好用,但也有些不尽人意。就是当一个html页面很长我需要在指定的地方分页那怎么办呢? wkhtmltopdf 开发者在开发的时候并不是没有考虑到这一点,wkhtmltopdf 有个很好的方法,就是在那个div的样式后添加一个:page-break-inside:avoid;就ok了。 例如 div{ width:800px; min-height:1362px;margin:auto;page-break-inside:avoid;} 以上就是个人总结的转pdf的方法,很多地方还可以扩展,小伙伴们开动脑筋动起来吧,不过目前一直没有解决就是没法用中文名称命名文件,如果有能解决的伙伴,麻烦在下面留言告知,谢谢么么哒了! (编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |