AI教程网 - 未来以来,拥抱AI;新手入门,从AI教程网开始......

Python — 使用WKhtmlTopdf 将Html转为PDF

html转化为pdf AI君 79℃

使用的工具或包

WKhtmlTopdf

WKhtmlTopdf一个使用QT WebKit引擎做渲染,能够将html转换为pdf文档或图片的命令行工具。该工具支持多平台,包括:Windows、Linux、OS X等。

  • CentOS下的安装
#yum install wkhtmltopdf
  • Detian/Ubuntu下的安装
#apt-get install wkhtmltopdf

pdfkit

pdfkit是WKhtmlTopdf的python封装。

#pip install pdfkit

参数说明

未完待续

遇到的问题

1、CentOS下无法安装WKhtmlTopdf

运行yum install wkhtmltopdf时,报如下错误:

There was a problem importing one of the Python modules required to run yum.

查看当前系统使用的Python版本,命令如下:

#python -V
Python 2.7.11

由于yum命令不兼容Python2.7,所以需要修改/usr/bin/yum文件,将文件的第一行:

#!/usr/bin/python

修改为:

#!/usr/bin/python2.6

修改完成后,运行如下命令安装WKhtmlTopdf,仍然没有安装成功。

#yum install wkhtmltopdf
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
No package wkhtmltopdf available.
Error: Nothing to do

查看CentOS版本,命令如下:

#lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.5 (Final)
Release:        6.5
Codename:       Final

尝试另一种安装:

#wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
#xz -d wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
#tar xvf wkhtmltox-0.12.4_linux-generic-amd64.tar
#cd wkhtmltox/bin
#sudo mv ./wkhtmltopdf /usr/bin/wkhtmltopdf
#sudo chmod +x /usr/bin/wkhtmltopdf

此时,通过如下命令验证是否安装成功:

#wkhtmltopdf -V
wkhtmltopdf 0.12.4 (with patched qt)

2、html转pdf失败

可能的原因:
– js中包含Map对象

3、如果table跨页面,则会出现表头跨页面显示的情况

可能的情况:table中使用thead和th,代码如下:

<table>
  <thead>
    <tr>
      <th>aaa</th>
      <th>bbb</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>ccc</td>
      <td>ddd</td>
    </tr>
  </tbody>
</table>

解决方法:不使用thead和th,代码如下:

<table>
  <tr>
    <th>aaa</th>
    <th>bbb</th>
  </tr>
  <tr>
    <td>ccc</td>
    <td>ddd</td>
  </tr>
</table>

4、页面显示文字过小

可能的情况:zoom参数设置的过小(默认值为1)

解决方法:通过调整zoom参数,是页面显示效果适中

5、wkhtmltopdf: cannot connect to X server

解决方法:
安装xvfb

#yum install xorg-x11-server-Xvfb

安装完成后,使用以下命令,把HTML转换成PDF:

#xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltopdf html页面链接地址 保存到本地的路径

在转换后的PDF文件中,可能会出现中文乱码或空白的情况。解决此问题,可以将simsun.ttc文件保存在/usr/share/fonts/目录下。

作者:cuckoo5
原文链接:https://blog.csdn.net/wudj810818/article/details/77000785

转载请注明:www.ainoob.cn » Python — 使用WKhtmlTopdf 将Html转为PDF

喜欢 (1)or分享 (0)