主要使用的是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

使用

一个简单的例子:

import pdfkit

pdfkit.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 * 作为字典值:

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 选项必须分开指定:

toc = {

'xsl-style-sheet': 'toc.xsl'

}

cover = 'cover.html'

pdfkit.from_file('file.html', options=options, toc=toc, cover=cover)

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

# 单个 CSS 文件

css = 'example.css'

pdfkit.from_file('file.html', options=options, css=css)

# Multiple CSS files

css = ['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表格:

Item.... 1
衣服 $241.10
化妆品 $30.00
食物 $730.40
tOTAL $1001.50

下面是生成的PDF截图

python将html存为pdf_使用Python将HTML转成PDF相关推荐

  1. python将html存为pdf_用Python将HTML转为PDF。

    上期提到了如何获取公众号文章信息,这回就说下怎么将网页转为PDF,方便日常学习.html 而后扩散一下以前一个比赛的结果(华章计算机抖音大赛).数据库 顺便谈谈本身对从此送书的一个想法.微信 另外以前 ...

  2. python抓取dblp网站的arXiv论文,下载保存成pdf

    python抓取dblp网站的arXiv论文,下载保存成pdf 需求 需要查找一些关于强化学习决策方面的论文,懒得一个一个下载,所以用python写了个脚本,在dblp网站上爬取论文. import ...

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

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

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

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

  5. python程序设计与科学计算pdf_用Python做科学计算 pdf版

    本书将介绍如何用Python开发科学计算的应用程序,除了介绍数值计算之外,我们还将着重介绍如何制作交互式的2D.3D图像:如何设计精巧的程序界面:如何和C语言所编写的高速计算程序结合:如何编写声音.图 ...

  6. python数据挖掘与分析实战pdf_《Python数据分析与挖掘实战》PDF+完整源码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本书共15章,分两个部分:基础篇.实战篇.基础篇介绍了数据挖掘的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例 ...

  7. python数据分析与挖掘实战pdf_《Python数据分析与挖掘实战》PDF+完整源码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本书共15章,分两个部分:基础篇.实战篇.基础篇介绍了数据挖掘的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例 ...

  8. python基础实例 韦玮 pdf_精通Python网络爬虫 核心技术、框架与项目实战 作者:韦玮PDF...

    文件目录: 书本介绍: 书名 精通Python网络爬虫:核心技术.框架与项目实战 作者 韦玮著 出版社 机械工业出版社 出版日期 2017 内容简介 本书从系统化的视角,为那些想学习Python网络爬 ...

  9. cad导出pdf_如何将cad文件转换成pdf格式?

    据说,有人想要将cad文件转换格式,说是想要转成pdf格式的. 请问那个人在哪里,我想找他好好聊一聊,毕竟小编我有的是方法! 有些文件格式转换器,可能很难将cad的文件转成PDF格式,所以这里建议大家 ...

最新文章

  1. MySQL使用可重复读作为默认隔离级别的原因
  2. android6.0源码分析之Camera API2.0下的Capture流程分析
  3. linux环境下中文乱码问题
  4. CentOS7 编译安装LVS 互为主备 (实测 笔记 Centos 7.0 + ipvsadm 1.27 + keepalived 1.2.15 )
  5. 10点43博客文章汇总(2018年度)
  6. 领导者的资质——学习笔记(3):领导者的十项职责
  7. Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题
  8. android4.1 l36h,索尼 L36h跌破3K 升Android 4.3机型推荐(6)-搜狐数码
  9. java设计模式之组合模式
  10. 配置管理基本概念、配置管理计划、配置管理主要活动
  11. 11-FreeSwitch-freeswitch架构
  12. python批量删除行_用python批量删除sheet
  13. Visio工具的跨线解决问题
  14. LinkButton的使用小结
  15. 【Win10】解决WLAN不见了,只有飞行模式开关,网络适配器只有以太网,无线网卡隐藏了,设备未连接问题
  16. FC(nes)游戏开发资源
  17. Soon:自学成才,从不设限 - Mixin Network开发者访谈
  18. JavaScript使用setInterval()实现真实进度条
  19. 局域网ip扫描工具_让你局域网里聊天、发送图片、视频与文件
  20. Parsing error processing resource path jndi:/localhost/JOA/WEB-INF/struts-config

热门文章

  1. $.countdown is not a function
  2. SAP Pricing的access sequence是如何在循环被处理的
  3. territory pop up window是否显示的逻辑,和transaction type差不多
  4. One order event display tool
  5. Adobe form batch output print mode - multiple
  6. IPC RFC call in Service Order scenario
  7. ERP和C4C中的function location
  8. 乾坤大挪移:SAP CRM WebClient UI 和 SAP Fiori UI 混搭并存
  9. 合并报表编制采用的理论_合并财务报表的简易编制方法,真是太好用了!财务,会计一起看...
  10. Tomcat启动报内存溢出错误解决(两种)