php html转为pdf文件,php使用wkhtmltopdf实现html转pdf

项目中有需求将html页面实时转为pdf并提供下载。经过各种查找比对,最终使用了wkhtmltopdf工具来实现。

wkhtmltopdf,可以很方便的将输入的url渲染并打印成pdf文件。当然也有一些坑需要踩。特别提出,wkhtmltopdf渲染不支持ES6语法,意味着使用ES6语法编写的页面可能会报错而无法打印或出现排版问题。

先贴一个我的使用代码段,具体的再讲

$filename = "xxx.pdf";

$url = "http://www.xxx.com/"

$save_url = "/tmp/".$filename;

$shell = "xvfb-run --auto-servernum wkhtmltopdf --no-stop-slow-scripts --window-status ready '$url' $save_url";

$process = shell_exec($shell);

if(file_exists($save_url)){

//pdf文件存在,转换成功。

}else{

//pdf文件不存在,转换错误。

}

要使用wkhtmltopdf,首先自然是要安装它。我使用的是ubuntu server-16.04,所以就直接使用apt安装了。因为是server版的ubuntu,没有桌面环境,同时也需要安装xvfb,为wkhtmltopdf提供一个虚拟屏幕。否则会无法渲染而报错。

sudo apt-get update

sudo apt-get install xvfb

sudo apt-get install wkhtmltopdf

wkhtmltopdf的使用就是在bash中使用(注意引号)

wkhtmltopdf ‘网址’ ‘保存地址’

即可。

在前面加上xvfb-run –auto-servernum,可以在无桌面环境的linux中使用

xvfb-run --auto-servernum wkhtmltopdf --no-stop-slow-scripts --window-status ready '$url' $save_url

参数:

–no-stop-slow-scripts 表示不停止计算缓慢的js脚本

–window-status ready 表示wkhtmltopdf将会等到渲染的网页window-status变为ready后再进行打印(可在页面中通过运行js代码window.status=”ready”进行状态匹配)

–debug-javascript 可以输出js的控制台信息,进行debug

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值