使用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,只需要这简单的几步……

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

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

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

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

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

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

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

使用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,只需要这简单的几步……

下面是生成的PDF截图

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

学到了吗?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,897评论 0 5
  • Python-PDFKit: HTML 转 PDF 封装器 Python 2 和 3 的 wkhtmltopdf ...
    夏威夷的芒果阅读 1,422评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,434评论 0 5
  • 五月的风吹开窗帘,一抹明媚的阳光从窗外的树缝间漏下,映得桌上张张白卷,一阵明晃晃的白光。 清脆的铃声尚未敲响,眼中...
    CC_黎阳阅读 246评论 0 2
  • 今天,有个朋友找我倾诉,大意是说,她之前帮了别人,却没想到,那人不记她的好,在她需要帮助的时候却不帮她。 她心里堵...
    彩蝶百合阅读 801评论 0 2