Linux上使用wkhtmltopdf将网页转为pdf

一、需求

将数据同步HTML模板生成PDF

二、wkhtmltopdf

wkhtmltopdf 不是程序,而是 软件。能够安装在 linux 或者 windows 服务器上通过命令行将任意html页面转pdf。基本上样式是一样的,不会有很大的偏差。

wkhtmltopdf 官网地址: https://wkhtmltopdf.org/

wkhtmltopdf 命令手册:https://wkhtmltopdf.org/usage/wkhtmltopdf.txt

三、安装使用

下面的安装使用是在Centos系统

安装wkhtmltopdf

1
[root@hongshaorou ~]# yum install wkhtmltopdf

安装完成之后执行下转换命令

1
2
[root@hongshaorou ~]# wkhtmltopdf www.baidu.com baidu.pdf
wkhtmltopdf: cannot connect to X server

报错是需要安装另一个第三方包 不同系统参考wkhtmltopdf - QXcbConnection: Could not connect to display文章安装。

1
[root@hongshaorou ~]# yum install xorg-x11-server-Xvfb

安装完成之后再次执行转换命令

1
2
3
4
[root@hongshaorou ~]# xvfb-run wkhtmltopdf www.baidu.com baidu.pdf
Loading page (1/2)
Printing pages (2/2)
Done
四、遇到的问题

如果你是在macOS上完成上面的操作,基本可以完美生成PDF。但是,当你是在Linux的环境的时候,很大可能会遇见导出的PDF出现空白和乱码。这是因为缺少相应的字体导致的。

后来查阅,原来程序在转换的时候需要对应的字体,以便用于文字渲染,但当你需要转换的html中包含本机环境没有的字体时,程序就会默认转为宋体来渲染,这其实应该是WebKit内核的设定,所以说,你的机器上至少应该有宋体!!,否则的话中文其实是没法显示的。

我们需要下载对应的字体,下载地址:simsun.ttc

下载好之后将字体放到/usr/share/fonts/目录下即可。

参考文章:

Linux上使用 wkhtmltopdf 将网页转成pdf)

Docker快速验证HTML导出PDF高效方案

Docker微服务之Html转Pdf,Html转Image

知识就是财富
如果您觉得文章对您有帮助, 欢迎请我喝杯水!