Linux上使用 wkhtmltopdf 将网页转成pdf

本文介绍了Linux服务器上安装和使用wkhtmltopdf将HTML页面转化为PDF的详细过程,包括解决QXcbConnection报错、支持Input表单、处理中文显示问题的方法。wkhtmltopdf是一款强大的软件,可以保持页面样式一致。

一、需求

TCPDF 还是存在缺点的,我在上面的文章中也说明了,比如 :

  • 不支持 html5 , 只支持 xhtml ,无法完整的复制整个页面的内容

  • style支持弱,对于表单的样式无法进行更改,就是有背景色,无法去掉等

因此我寻求另外一种更好的转变方式,将用户编辑完的HTML页面直接生成PDF,一模一样,即使是样式也一模一样。

各种试,各种查找,最终选择了 wkhtmltpdf 这个神一样的 软件

 

二、简单介绍

wkhtmltopdf 不是程序,而是 软件。能够安装在 linux 或者 windows 服务器上通过命令行将任意html页面转pdf。

基本上样式是一样的,不会有很大的偏差。

wkhtmltopdf 对页面代码没有什么要求,只要是html的页面即可,比 TCPDF 要强大很多(毕竟是一款软件)

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

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

 

三、安装

把安装单独拿出来是因为,wkhtmltopdf 最麻烦的地方不是使用,而是安装。

关于安装和使用报错,推荐一篇文章,说的很详细(也说了如何源码编译安装):

 

1、服务器环境

ubuntu-16 64位

 

2、APT-GET 安装

推荐使用,不会有什么错误,只要安装了依赖库即可,不推荐直接用二进制。

依赖安装:

$ sudo apt-get install openssl build-essential xorg libssl-dev libxrender-dev

安装 wkhtmltopdf

$ sudo apt-get install wkhtmltopdf

 

3、使用报错

安装其实很简单,并且 apt-get install 自动增加环境变量,可以直接使用

$ sudo wkhtmltopdf https://www.baidu.com 1.pdf

 

报错:

QXcbConnection: Could not connect to display
Aborted (core dumped)

解决方法:

stackoverflow 上给出的最简单的解决方案是 安装 xvfb

答案地址:

安装之后使用新的方式运行即可 原来的基础上加上 xvfb-run :

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

 

四、Input表单或javascript脚本支持

需要注意的是,新版本命令行参数已经变化,百度的那些所谓的中文参考已经不能用,新的参数说明:

如果需要支持input表单,则 加上 --enable-forms 

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

 

五、 效果

将百度首页进行pdf转换:

白俊遥博客

 

六、中文

如果中文变成了空白,则很好弄,Linux 系统不支持中文

1、下载微软雅黑字体:

2、配置linux服务器的字体

 

 

上面的下载不成功,可以用这种

先先看linux操作系统的版本及位数

cat /etc/redhat-release   查看系统的版本
getconf LONG_BIT 查看系统是多少位

wkhtmltopdf 下载地址 http://wkhtmltopdf.org/downloads.html

由于我的操作系统是 CentOS Linux release 7.2.1511 (Core) 所以选择图中红框的位置

如果下载不下来 就使用

wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

 在根路径下会找到

使用

tar xvfJ wkhtmltox-0.12.3_linux-generic-amd64.tar.xz

进行解压

之后设置权限
 

七 设置权限

sudo mv ./wkhtmltoimage /usr/bin/wkhtmltoimage

sudo chmod +x /usr//bin/wkhtmltoimage

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值