使用wkhtmltopdf的一些事情

写在前面:最近项目中要使用到导出把网页导出到图表的问题,本来以为随便找一个第三方的东西就可以搞定,不过因为网页中有一些图表,所有遇到了很多的坑,最后决定使用wkhtmltopdf,因为它是用Qt WebKit 引擎做渲染虽然也有一些坑,但是可以满足需求了,下面就是一些记录。

安装wkhtmltopdf

wkhtmltopdf是一个可以执行的二进制文件,使用php调用系统的命令来执行。php用composer可以很容易的安装,也可以在网站上面直接下载然后安装,传送门

// 用到的composer包
https://packagist.org/packages/knplabs/knp-snappy
https://github.com/KnpLabs/snappy

// 项目是用yii1.0开发
https://packagist.org/packages/dmitrivereshchagin/yii-snappy
https://github.com/dmitrivereshchagin/yii-snappy

// 具体的版本
composer require symfony/process 2.8.32
composer require knplabs/knp-snappy 0.4.2
composer require h4cc/wkhtmltopdf-amd64 0.12.x

目前并没有深入的研究很多的用法,先来简单的记录一下,用php的knp-snappy来操作wkhtmltopdf的过程以及遇到的坑。

简单的使用

class CPDF
{
    public static function getPdf()
    {
        Yii::import('application.vendor.autoload', true);
        $binaryPath = Yii::app()->params['pdfBinaryPath'];
        $pdf = new \Knp\Snappy\Pdf($binaryPath);
        $pdf->setOption('page-size', 'A3');
        $pdf->setOption('no-background', true);
        return $pdf;
    }

    public static function export($fileName, $html)
    {
        $pdf = self::getPdf();
        $pdf = $pdf->getOutputFromHtml($html);
        Yii::app()->request->sendFile($fileName, $pdf);
    }
}

可能会遇到的坑
1、导出的pdf中没有中文字体,这个是因为需要在系统安装一个字体,现在用的linux,默认的字体路径是/usr/share/fonts,字体文件可以从windows系统中的字体拷贝。
2、导出半截失败,可能是因为网页中包含了相对地址的资源。
3、需要执行的权限,没有权限白扯
4、使用hcharts有一个动画效果,直接导出会出现图表是半个的情况,需要关掉动画的效果。

最后附上一个比较详细的说明吧,传送门

转载于:https://www.cnblogs.com/hanpengyu/p/8404106.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值