Python实现html转换为pdf报告(生成pdf报告)功能示例


Posted in Python onMay 04, 2019

本文实例讲述了Python实现html转换为pdf报告(生成pdf报告)功能。分享给大家供大家参考,具体如下:

1、先说下html转换为pdf:其实支持直接生成,有三个函数pdfkit.f

安装python包:pip Install pdfkit

系统安装wkhtmltopdf:参考 https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf

mac下的wkhtmltopdf: 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')

传递一个打开的文件:

withopen('file.html')asf:
  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)

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

# 单个 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 = """ <html> <head> <meta name="pdfkit-page-size" content="Legal"/> <meta name="pdfkit-orientation" content="Landscape"/> </head> Hello World! </html> """
pdfkit.from_string(body,'out.pdf')#with --page-size=Legal and --orientation=Landscape

2、再说reporatlab

安装:

pip install reportlab

简单使用:

#!/usr/bin/python
from reportlab.pdfgen import canvas
def hello():
  c = canvas.Canvas("helloworld.pdf")
  c.drawString(100,100,"Hello,World")
  c.showPage()
  c.save()
hello()
#!/usr/bin/env python
import subprocess
import datetime
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch
def disk_report():
  p = subprocess.Popen("df -h", shell=True, stdout=subprocess.PIPE)
#  print p.stdout.readlines()
  return p.stdout.readlines()
def create_pdf(input, output="disk_report.pdf"):
  now = datetime.datetime.today()
  date = now.strftime("%h %d %Y %H:%M:%S")
  c = canvas.Canvas(output)
  textobject = c.beginText()
  textobject.setTextOrigin(inch, 11*inch)
  textobject.textLines('''Disk Capcity Report: %s''' %date)
  for line in input:
    textobject.textLine(line.strip())
  c.drawText(textobject)
  c.showPage()
  c.save()
report = disk_report()
create_pdf(report)

参考:

1、https://github.com/twtrubiks/python-pdfkit-example

2、//3water.com/article/160638.htm

3、https://bitbucket.org/rptlab/reportlab

4、http://www.reportlab.com/opensource/

5、http://www.reportlab.com/docs/reportlab-userguide.pdf

6、https://3water.com/article/53233.htm

更多Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python深入学习之装饰器
Aug 31 Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
Apr 24 Python
Python for Informatics 第11章 正则表达式(一)
Apr 21 Python
python类中super()和__init__()的区别
Oct 18 Python
浅谈Python NLP入门教程
Dec 25 Python
Python编程中NotImplementedError的使用方法
Apr 21 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
python 字符串追加实例
Jul 20 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
python生成任意频率正弦波方式
Feb 25 Python
Python闭包及装饰器运行原理解析
Jun 17 Python
Django中Aggregation聚合的基本使用方法
Jul 09 Python
Python实现将HTML转成PDF的方法分析
May 04 #Python
Python第三方库face_recognition在windows上的安装过程
May 03 #Python
Python人脸识别第三方库face_recognition接口说明文档
May 03 #Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 #Python
利用python将图片版PDF转文字版PDF
May 03 #Python
Python3.0中普通方法、类方法和静态方法的比较
May 03 #Python
Python Flask框架模板操作实例分析
May 03 #Python
You might like
动态生成gif格式的图像要注意?
2006/10/09 PHP
php程序内部post数据的方法
2015/03/31 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
使用js 设置url参数
2013/07/08 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
微信小程序 页面跳转传值实现代码
2017/07/27 Javascript
JS中数据结构之栈
2019/01/01 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
python 实现超级玛丽游戏
2020/11/25 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
高级护理实习生自荐信
2013/09/28 职场文书
关于旅游的活动方案
2014/08/15 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
青年文明号申报材料
2014/12/23 职场文书
避暑山庄导游词
2015/02/04 职场文书
开网店计划分析
2019/07/30 职场文书