使用Python将HTML批量转成PDF,只需要这简单的几步……

主要使用的是wkhtmltopdf的Python封装——pdfkit

安装

1. Install python-pdfkit:

$ pip install pdfkit

2. Install wkhtmltopdf:

  • Debian/Ubuntu:

$ sudo apt-get install wkhtmltopdf

  • Redhat/CentOS

sudo yum intsall wkhtmltopdf

  • MacOS

brew install Caskroom/cask/wkhtmltopdf

使用

一个简单的例子:

使用Python将HTML批量转成PDF,只需要这简单的几步……

你也可以传递一个url或者文件名列表:

使用Python将HTML批量转成PDF,只需要这简单的几步……

也可以传递一个打开的文件:

使用Python将HTML批量转成PDF,只需要这简单的几步……

如果你想对生成的PDF作进一步处理, 你可以将其读取到一个变量中:

使用Python将HTML批量转成PDF,只需要这简单的几步……

你可以制定所有的 wkhtmltopdf 选项 http://wkhtmltopdf.org/usage/wkhtmltopdf.txt. 你可以移除选项名字前面的 '--' .如果选项没有值, 使用None, False or * 作为字典值:

使用Python将HTML批量转成PDF,只需要这简单的几步……_第1张图片
使用Python将HTML批量转成PDF,只需要这简单的几步……

默认情况下, PDFKit 将会显示所有的 wkhtmltopdf 输出. 如果你不想看到这些信息,你需要传递一个 quiet 选项:

使用Python将HTML批量转成PDF,只需要这简单的几步……

由于wkhtmltopdf的命令语法 , TOC 和 Cover 选项必须分开指定:

使用Python将HTML批量转成PDF,只需要这简单的几步……_第2张图片
使用Python将HTML批量转成PDF,只需要这简单的几步……

当你转换文件、或字符串的时候,你可以通过css选项指定扩展的 CSS 文件。

使用Python将HTML批量转成PDF,只需要这简单的几步……_第3张图片
使用Python将HTML批量转成PDF,只需要这简单的几步……

你也可以通过你的HTML中的meta tags传递任意选项:

使用Python将HTML批量转成PDF,只需要这简单的几步……_第4张图片
使用Python将HTML批量转成PDF,只需要这简单的几步……

配置

每个API调用都有一个可选的参数。这应该是pdfkit.configuration()API 调用的一个实例. 采用configuration 选项作为初始化参数。可用的选项有:

  • wkhtmltopdf ——wkhtmltopdf二进制文件所在的位置。默认情况下pdfkit 会尝试使用which (在类UNIX系统中) 或 where (在Windows系统中)来判断
  • meta_tag_prefix -- pdfkit的前缀指定 meta tags(元标签) - 默认情况是pdfkit-

示例 :针对wkhtmltopdf不在系统路径中(不在$PATH里面)

PATH里面):

使用Python将HTML批量转成PDF,只需要这简单的几步……

问题

IOError:'No wkhtmltopdf executable found':

确保 wkhtmltopdf 在你的系统路径中(PATH), 会通过 configuration进行了配置 (详情看上文描述)。 在Windows系统中使用where wkhtmltopdf命令 或 在 linux系统中使用 which wkhtmltopdf 会返回 wkhtmltopdf二进制可执行文件所在的确切位置.

  • IOError: 'Command Failed'

如果出现这个错误意味着 PDFKit不能处理一个输入。你可以尝试直接在错误信息后面直接运行一个命令来查看是什么导致了这个错误 (某些版本的 wkhtmltopdf会因为段错误导致处理失败)

  • 正常生成,但是出现中文乱码

确保两项:

1)、你的系统中有中文字体

2)、在html中加入

下面是我随便写的一个HTML表格:

使用Python将HTML批量转成PDF,只需要这简单的几步……_第5张图片
使用Python将HTML批量转成PDF,只需要这简单的几步……

下面是生成的PDF截图

使用Python将HTML批量转成PDF,只需要这简单的几步……_第6张图片
使用Python将HTML批量转成PDF,只需要这简单的几步……

学到了吗?

你可能感兴趣的:(使用Python将HTML批量转成PDF,只需要这简单的几步……)