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中常用检测字符串相关函数汇总
Apr 15 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
基于python二叉树的构造和打印例子
Aug 09 Python
使用python3批量下载rbsp数据的示例代码
Dec 20 Python
如何解决pycharm调试报错的问题
Aug 06 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 Python
python中validators库的使用方法详解
Sep 23 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
php框架Phpbean说明
2008/01/10 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
超清晰的document对象详解
2007/02/27 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
Python+微信接口实现运维报警
2016/08/27 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
2017/04/11 Python
python同步windows和linux文件
2019/08/29 Python
python实现井字棋小游戏
2020/03/04 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
机械专业应届生求职信
2013/09/21 职场文书
理工大学毕业生自荐信
2013/11/01 职场文书
大学生最新职业生涯规划书范文
2014/01/12 职场文书
初中物理教学反思
2014/01/14 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
学生会部长竞聘书
2014/03/31 职场文书
租房协议书怎么写
2014/04/10 职场文书
大学活动总结范文
2014/04/29 职场文书
销售目标责任书
2014/07/23 职场文书
公司委托书范本5篇
2014/09/20 职场文书
慰问信范文
2015/02/14 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
解决redis批量删除key值的问题
2022/03/23 Redis