WkHtmlToPdf在windows环境下怎么用,php语言实现?
安装wkhtmltopdf
#apt-getinstallwkhtmltopdf
从HTML生成PDF文件的基本语法如下:
#wkhtmltopdfinput-fileoutput-file
我们可以从任何网页生成PDF:
#wkhtmltopdfexample.comexample.pdf
或从本地html文件:
#wkhtmltopdfexample.htmlexample.pdf
以上命令只能在Linuxbox图形环境中使用。如果我们在一个VPS或专用服务器上生成PDF,如果我们执行该命令,我们将得到从下错误:
wkhtmltopdf:cannotconnecttoXserver
为了解决这个问题,我们需要使用一个名为xvfb的工具。
Xvfb是一个X服务器,能够运行在没有显示硬件和没有物理输入设备的机器上。它使用虚拟内存来模拟一个dumbframebuffer。
回到顶部
安装xvfb
#apt-getinstallxvfb
接下来,我们需要创建一个shell脚本:
xvfb-run--server-args="-screen0,1024x768x24"/usr/bin/wkhtmltopdf$*
然后将它保存在/usr/bin/wkhtmltopdf.sh下
下一步,我们将创建一个symbolic链接,这样我们就可以执行脚本而不用编写的完整路径:
#ln-s/usr/bin/wkhtmltopdf.sh/usr/local/bin/wkhtmltopdf2
让我们尝试执行shell脚本,并看看会发生什么。
#wkhtmltopdf2example.comexample.pdf
Loadingpage(1/2)
Printingpages(2/2)
Done
好,如果能够正确运行。就可以用以下自定义PHP脚本来生成一个PDF文件。
//Turnonoutputbuffering
ob_start();
echo"<html>";
echo"<head>";
echo"<linkhref='http://example.com/style.css'rel='stylesheet'type='text/css'>";
echo"</head>";
echo"<body>";
echo"<p>customHTMLtoPDFreport</p>";
echo"</body>";
echo"</html>";
//returnthecontentsoftheoutputbuffer
$html=ob_get_contents();
$filename=date('YmdHis');
//savethehtmlpageintmpfolder
file_put_contents("/tmp/{$filename}.html",$html);
//Cleantheoutputbufferandturnoffoutputbuffering
ob_end_clean();
//convertHTMLtoPDF
shell_exec("wkhtmltopdf2-q/tmp/{$filename}.html/tmp/{$filename}.pdf");
if(file_exists("/tmp/{$filename}.pdf")){
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename='{$filename}.pdf'");
echofile_get_contents("/tmp/{$filename}.pdf");
}else{
exit;
}