wkhtmltopdf 是一个开源、简单而有效的命令行 shell 程序,它可以将任何 HTML (网页)转换为 PDF 文档或图像(jpg、png 等)。
wkhtmltopdf 是用 C++ 编写的,并在 GNU/GPL (通用公共许可证)下发布。它使用 WebKit 渲染引擎将 HTML 页面转换为 PDF 文档且不会丢失页面的质量。这是一个用于实时创建和存储网页快照的非常有用且可信赖的解决方案。
wkhtmltopdf 的功能
- 开源并且跨平台。
- 使用 WebKit 引擎将任意 HTML 网页转换为 PDF 文件。
- 添加页眉和页脚的选项
- 目录生成 (TOC) 选项。
- 提供批量模式转换。
- 通过绑定 libwkhtmltox 来支持 PHP 或 Python。
1、安装evince pdf 浏览器
让我们在 Linux 系统中安装 evince (一个 PDF 阅读器)来浏览 PDF 文件。
yum install evince
2、然后去官网下载wkhtmltopdf 的源码进行安装。
为了能从任意路径执行程序,将 wkhtmltopdf 安装到 /usr/bin
目录下。
cp wkhtmltox/bin/wkhtmltopdf /usr/bin
3、如何使用wkhtmltopdf
我们会看到如何将远程的 HTML 页面转换成 PDF 文件、验证信息、使用 evince 在 GNOME 桌面中浏览创建的文件。
wkhtmltopdf http://www.baidu.com test.pdf
在centos7 上面执行上面命令会报错:
解决方法:
stackoverflow 上给出的最简单的解决方案是 安装xvfb。在centos 下面就是安装
yum install xorg-x11-server-Xvfb
然后:export DISPLAY=:0 (这个不需要也是可以的)
xvfb-run wkhtmltopdf http://www.baidu.com test.pdf
浏览生成的pdf 文件
file test.pdf
在桌面中使用evince 查看最新生成的pdf 文件
evince test.pdf
浏览生成的文件信息,运行下面的命令
pdfinfo test.pdf
给pdf 创建页面的目录(toc)
wkhtmltopdf toc http://www.baidu.com test.pdf
4、中文乱码或者空白解决方法
如果wkhtmltopdf 中文显示空白或者乱码方框
打开window C:\Windows\Fonts\simsun.ttc 拷贝到linu 服务器/usr/share/fonts 目录下,再次生成pdf 中文显示正常
解决错误参考了:https://gitee.com/cclinux/codes/03r72sqyhji8nfcx9kg1472