1. 最近公司需要把html页面的内容生成pdf并下载,试过很多方法都没有满意的效果,后来找到wkhtmltopdf这款软件,终于解决了这个问题。
2、下载安装
官网:https://wkhtmltopdf.org/。
主页download里下载对应系统的版本安装并把安装后的文件放到vs里面方便之后调用。
3、添加水印 公司要求生成的pdf需要添加水印,每页pdf显示两个logo水印图片。开始是用给每个div设置背景图片的方式添加水印,让背景图片以y轴重复。由于每个div的高度不定,导致一个水印生成在两个pdf页面,影响美观,果断放弃。后来使用页眉设置html的方式来显示水印,这里要注意的是,页眉会占用html的位置,所以我用before和after伪元素来写两个logo水印。 之后只要用--header-html head.html方式调用这个页面就会每页pdf生成两个水印图片。 4、pdf分页 默认pdf生成是把内容从上往下写入,并不好看, 公司要求每个div处需要从新的页开始,这里给需要分页的div添加page-break-before:left样式即可 5、其他 a、如果有td或者th需要隐藏border,需要使用这个样式border:0。 b、生成的pdf设置间距时用padding不用margin。 /** * 生成文件 */ public function getpdf() { $filename = "./pdf/aaa.pdf"; $html="http://*****"; $cmd="/usr/local/bin/wkhtmltopdf --header-html ./newstodaypdf/header.html --footer-html ./newstodaypdf/footer.html ".$html." ".$filename; exec($cmd,$res); ob_start(); $title=substr($filename,strrpos($filename,'/')+1); $size=readfile($filename); Header( "Content-type:application/octet-stream"); Header( "Accept-Ranges:bytes"); Header( "Accept-Length:"); header( "Content-Disposition: attachment; filename= $title"); exit; }