wkhtmltopdf

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;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值