今天分享的则是如何将 HTML 保存为 PDF。

熟练利用好这招,可以试着自己把精品网页内容做成 PDF 电子书。
主要使用的是wkhtmltopdf的Python封装——pdfkit

安装

1. Install python-pdfkit:

pip install pdfkit

2. Install wkhtmltopdf:

sudo apt-get install wkhtmltopdf
sudo yum intsall wkhtmltopdf
brew install Caskroom/cask/wkhtmltopdf

使用

一个简单的例子:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,
群里还有不错的视频学习教程和PDF电子书!
'''import pdfkitpdfkit.from_url('http://google.com', 'out.pdf')pdfkit.from_file('test.html', 'out.pdf')pdfkit.from_string('Hello!', 'out.pdf')

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

    pdfkit.from_url(['google.com', 'yandex.ru', 'engadget.com'], 'out.pdf')pdfkit.from_file(['file1.html', 'file2.html'], 'out.pdf')

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

    with open('file.html') as f:pdfkit.from_file(f, 'out.pdf')

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

    # 设置输出文件为False,将结果赋给一个变量pdf = pdfkit.from_url('http://google.com', False)

你可以制定所有的 wkhtmltopdf 选项. 你可以移除选项名字前面的 ‘–’ .如果选项没有值, 使用 None, Falseor * 作为字典值:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,
群里还有不错的视频学习教程和PDF电子书!
'''options = {'page-size': 'Letter','margin-top': '0.75in','margin-right': '0.75in','margin-bottom': '0.75in','margin-left': '0.75in','encoding': "UTF-8",'no-outline': None}pdfkit.from_url('http://google.com', 'out.pdf', options=options)

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

    options = {'quiet': ''}pdfkit.from_url('google.com', 'out.pdf', options=options)

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

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,
群里还有不错的视频学习教程和PDF电子书!
'''toc = {'xsl-style-sheet': 'toc.xsl'}cover = 'cover.html'pdfkit.from_file('file.html', options=options, toc=toc, cover=cover)

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

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,
群里还有不错的视频学习教程和PDF电子书!
'''# 单个 CSS 文件css = 'example.css'pdfkit.from_file('file.html', options=options, css=css)# Multiple CSS filescss = ['example.css', 'example2.css']pdfkit.from_file('file.html', options=options, css=css)

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

    body = """Hello World!"""pdfkit.from_string(body, 'out.pdf') #with --page-size=Legal and --orientation=Landscape

配置

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

wkhtmltopdf —— wkhtmltopdf二进制文件所在的位置。默认情况下 pdfkit 会尝试使用 which (在类UNIX系统中) 或 where (在Windows系统中)来判断.

meta_tag_prefix – pdfkit的前缀指定 meta tags(元标签) - 默认情况是 pdfkit-
示例 :针对 wkhtmltopdf不在系统路径中(不在 $PATH里面):

    config = pdfkit.configuration(wkhtmltopdf='/opt/bin/wkhtmltopdf'))pdfkit.from_string(html_string, output_file, configuration=config)

问题

IOError: 'No wkhtmltopdf executable found':

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

IOError: 'Command Failed'

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

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

确保两项:
1)、你的系统中有中文字体
2)、在html中加入**

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

<html>
<head><meta charset="UTF-8"></head>
<body>
<table width="400" border="1"><tr><th align="left">Item....</th><th align="right">1</th></tr><tr><td align="left">衣服</td><td align="right">$241.10</td></tr><tr><td align="left">化妆品</td><td align="right">$30.00</td></tr><tr><td align="left">食物</td><td align="right">$730.40</td></tr><tr><th align="left">tOTAL</th><th align="right">$1001.50</th></tr>
</table>
</body>
</html>

下面是生成的PDF截图


另也可直接使用:https://pdfcrowd.com/#convertbyinput

使用 Python 制作属于自己的 PDF 电子书相关推荐

  1. python 制作自己的新闻_【一点资讯】使用 Python 制作属于自己的 PDF 电子书 www.yidianzixun.com...

    之前介绍过一篇如何将 PDF 转换为图片的文章(点击这里查看),今天分享的则是如何将 HTML 保存为 PDF. 熟练利用好这招,可以试着自己把精品网页内容做成 PDF 电子书. 作者:taceywo ...

  2. python教材免费版-北大内部教材python版算法与数据结构PDF电子书免费下载

    自从第一台需要人们用线缆和交换机向其传达指令的电子计算机问世以来,编程已发生了巨大改变.计算机科技的革新给计算机科学家提供了越来越多的工具和平台,方便他们在社会的各个领域一显身手.高速处理器.高速网络 ...

  3. 父与子python 百度云_《父与子的编程之旅:与小卡特一起学Python第2版》pdf电子书百度网盘下载地址...

    内容简介: 本书是一本家长与孩子共同学习编程的入门书.作者是一对父子,他们以Python语言为例,详尽细致地介绍了Python如何安装.字符串和操作符等程序设计的基本概念,介绍了条件语句.函数.模块等 ...

  4. 廖雪峰python教程书-Python 爬虫:把廖雪峰的教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...

  5. 廖雪峰python教程pdf-爬虫:把廖雪峰的教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...

  6. python爬虫教程书-Python 爬虫:把廖雪峰教程转换成 PDF 电子书

    声明:本文仅供学习参考,切忌用于其它用途,爬的过程中注意控制请求速度,以免给服务器带来过多的压力 写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来 ...

  7. python爬虫教程pdf-Python 爬虫:把廖雪峰教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天尝试写一个爬虫,将廖雪峰老师的 ...

  8. python基础教程廖雪峰云-Python 爬虫:把廖雪峰的教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...

  9. Python 爬虫:把教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...

最新文章

  1. 什么是REST?以及RESTful
  2. rref--计算行阶梯矩阵
  3. simulink中mpc模块怎么使用_Controllogix系统中ILX34MBS485模块使用
  4. vvv在线文档导出工具_一款真正实时的在线文档协作编辑工具,多人可同时对一份文件修改...
  5. android消息提示方法自定义,Android自定义消息提示容器
  6. MOSS中代码运行的权限提升(半摘)
  7. C++ 常量类型 const 详解
  8. Object类的用法(二)
  9. opencv之实现回形遍历像素算法
  10. ArcGIS中GWR模型的构建
  11. BSN区块链服务网络介绍
  12. 正则表达式 -文书网ktr
  13. matlab纵坐标两边标注,matlab纵坐标标注
  14. AHCI,SATA,NVME
  15. java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档+部署
  16. 程序员常用的16款火爆软件,你get到了哪些软件?
  17. css字号 h5_你应该知道的CSS文字大小单位PX、EM、PT
  18. 数学基础知识(扩展欧几里得定理)
  19. Fineplus v1.4 显IP For QQ2007
  20. IntelliJ IDEA详细配置图解,挖掘更多的功能!

热门文章

  1. SpringMvc多视图整合(jsp、velocity、freemarker)
  2. ASUS WL-500W企业级无线路由器试用
  3. mysql拆分字符串后行转列_mysql行转列(拆分字符串场景)
  4. android源生setting华为,Android 设置默认桌面,默认应用,辅助功能,电池优化,设备管理器,悬浮窗等...
  5. 【ABAP】通过SE30来测试程序的执行效率
  6. ME2N标准报表中加EKKO/EKPO中没显示的字段
  7. 销售订单按交货单合并Billing
  8. FM之RKD_WORD_WRAP
  9. IDOC实例, Inbound IDOC
  10. 疫情下跨境电商逆势增长,大数据告诉你如何抓住跨境网购新趋势