zoukankan      html  css  js  c++  java
  • 使用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 KnpSnappyPdf($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有一个动画效果,直接导出会出现图表是半个的情况,需要关掉动画的效果。
    5、分页标识

    <div style="page-break-after:always"></div>
    

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

  • 相关阅读:
    小素典会员订阅协议
    vue项目自动构建工具1.0,支持多页面构建
    spring boot 框架根據 sql 創建語句自動生成 MVC層類代碼
    使用 docsify 創建自己的 markdown 文檔系統
    “衣”及其部分屬字
    js原型鏈與js繼承解析
    js 中怎么获取session 值和HTML标签的属性值
    layui table动态表头 改变表格头部 重新加载表格的方法
    throw throws Throwable 关联于区别
    静态代理和动态代理的区别和联系
  • 原文地址:https://www.cnblogs.com/hanpengyu/p/8404106.html
Copyright © 2011-2022 走看看