资讯专栏INFORMATION COLUMN

初识wkhtmltopdf

wfc_666 / 811人阅读

摘要:背景最近接到一个客户需求,要求将学生的考试结果分析表格和图表导出到。本着最好不要额外安装软件的原则,搜索过后分别尝试了等等。但是实现效果都与预期差距较大。它们是开源命令行工具,使用渲染引擎将呈现为和各种图像格式。它们不需要显示或显示服务。

背景

最近接到一个客户需求,要求将学生的考试结果分析表格和图表导出到PDF。表格使用的是普通的table,图表引用了https://www.chartjs.org/ 遇到的问题详见wkhtmltopdf chartjs

思路

在网上查了下前后端都可以将html生成pdf,考虑到实现效果以及效率,最后决定将转化工作在服务端使用PHP完成。本着最好不要额外安装软件的原则,搜索过后分别尝试了 TCPDF MPDF FPDF html2pdf 等等。但是实现效果都与预期差距较大。最后不得不尝试需要额外安装的wkhtmltopdf。

wkhtmltopdf简介

引用 官网 介绍:wkhtmltopdf是wkhtmltox中的一个工具,另一个是wkhtmltoimage。它们是开源(LGPLv3)命令行工具,使用Qt WebKit渲染引擎将HTML呈现为PDF和各种图像格式。它们不需要显示或显示服务。值得一提的是谷歌浏览器chrome也使用的是Qt WebKit渲染引擎。

wkhtmltopdf安装

安装是在docker中进行的,使用开源项目docker-lnmp。但该php使用的是alpine版本,遂把镜像改回默认的debian版本,后由于客户使用的是centos,又多带带下载了centos7的镜像。

debian安装
# wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox_0.12.5-1.jessie_amd64.deb
# dpkg -i wkhtmltox_0.12.5-1.jessie_amd64.deb

这里安装会提示缺少依赖信息,其他信息可以直接通过apt-get install进行安装,但是这两个需要注意下 :

dpkg: dependency problems prevent configuration of wkhtmltox:
 wkhtmltox depends on libpng12-0; however:
  Package libpng12-0 is not installed.
 wkhtmltox depends on libssl1.0.0; however:
  Package libssl1.0.0 is not installed.

这两个包直接去仓库中搜索安装即可,然后再次执行安装命令,就会成功安装了

# dpkg -i wkhtmltox_0.12.5-1.jessie_amd64.deb
# wkhtmltopdf -V
# wkhtmltopdf --enable-forms  https://www.baidu.com baidu.pdf
centos安装
# wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
# rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm

正常系统安装并update后会提示缺少依赖信息:

error: Failed dependencies:
    fontconfig is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    freetype is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    libpng is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    libjpeg is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    libX11 is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    libXext is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    libXrender is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    xorg-x11-fonts-Type1 is needed by wkhtmltox-1:0.12.2.1-1.x86_64
    xorg-x11-fonts-75dpi is needed by wkhtmltox-1:0.12.2.1-1.x86_64

这里直接按照提示的安装包就可以了

# yum install fontconfig freetype libpng libjpeg libX11 libXext libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi

然后再次执行安装命令,就会成功安装了

# rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm
# wkhtmltopdf -V
# wkhtmltopdf --enable-forms https://www.baidu.com baidu.pdf
wkhtmltopdf问题

这里需要注意的是部分系统可能会抛出异常
QXcbConnection: Could not connect to display Aborted (core dumped)
这里需要安装xvfb然后使用xvfb运行

# xvfb-run wkhtmltopdf --enable-forms https://www.baidu.com baidu.pdf

导出的pdf中文会有乱码,可以将windows系统c盘system32目录下的Fonts里面的字体拷贝到linux的/usr/share/fonts下重新运行就可以了

wkhtmltopdf是跨平台的软件,和后端使用那种语言是没有关系的。
PHP有直接可以用的框架https://github.com/KnpLabs/snappy和laravel框架https://github.com/barryvdh/laravel-snappy
当然直接使用PHP执行shell也及其简单,但要注意防范webshell。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31166.html

相关文章

  • 初识wkhtmltopdf

    摘要:背景最近接到一个客户需求,要求将学生的考试结果分析表格和图表导出到。本着最好不要额外安装软件的原则,搜索过后分别尝试了等等。但是实现效果都与预期差距较大。它们是开源命令行工具,使用渲染引擎将呈现为和各种图像格式。它们不需要显示或显示服务。 背景 最近接到一个客户需求,要求将学生的考试结果分析表格和图表导出到PDF。表格使用的是普通的table,图表引用了https://www.char...

    Towers 评论0 收藏0
  • 初识wkhtmltopdf

    摘要:背景最近接到一个客户需求,要求将学生的考试结果分析表格和图表导出到。本着最好不要额外安装软件的原则,搜索过后分别尝试了等等。但是实现效果都与预期差距较大。它们是开源命令行工具,使用渲染引擎将呈现为和各种图像格式。它们不需要显示或显示服务。 背景 最近接到一个客户需求,要求将学生的考试结果分析表格和图表导出到PDF。表格使用的是普通的table,图表引用了https://www.char...

    April 评论0 收藏0
  • 初识wkhtmltopdf

    摘要:背景最近接到一个客户需求,要求将学生的考试结果分析表格和图表导出到。本着最好不要额外安装软件的原则,搜索过后分别尝试了等等。但是实现效果都与预期差距较大。它们是开源命令行工具,使用渲染引擎将呈现为和各种图像格式。它们不需要显示或显示服务。 背景 最近接到一个客户需求,要求将学生的考试结果分析表格和图表导出到PDF。表格使用的是普通的table,图表引用了https://www.char...

    wushuiyong 评论0 收藏0
  • 初识wkhtmltopdf

    摘要:背景最近接到一个客户需求,要求将学生的考试结果分析表格和图表导出到。本着最好不要额外安装软件的原则,搜索过后分别尝试了等等。但是实现效果都与预期差距较大。它们是开源命令行工具,使用渲染引擎将呈现为和各种图像格式。它们不需要显示或显示服务。 背景 最近接到一个客户需求,要求将学生的考试结果分析表格和图表导出到PDF。表格使用的是普通的table,图表引用了https://www.char...

    刘永祥 评论0 收藏0
  • 关于 wkhtmltopdf:html 转 pdf 的命令行工具

    摘要:一什么是是一个开源的,使用渲染引擎,把转换为文件的命令行工具。可以通过命令行参数输出默认的文档,通过命令行参数也可指定以格式输出当前处理文档的目录到指定文件。 一、什么是 wkhtmltopdf? wkhtmltopdf 是一个开源的,使用Qt WebKit 渲染引擎,把 html 转换为 pdf 文件的命令行工具。wkhtmltopdf 还有一个双胞胎兄弟 wkhtmltoimage...

    entner 评论0 收藏0

发表评论

0条评论

wfc_666

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<