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处理文本文件并生成指定格式的文件
Jul 31 Python
python在linux系统下获取系统内存使用情况的方法
May 11 Python
python统计日志ip访问数的方法
Jul 06 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
Jun 29 Python
python取代netcat过程分析
Feb 10 Python
Python实现简单http服务器
Apr 12 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
python程序封装为win32服务的方法
Mar 07 Python
Python参数类型以及常见的坑详解
Jul 08 Python
django基于存储在前端的token用户认证解析
Aug 06 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 Python
Python使用openpyxl复制整张sheet
Mar 24 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+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
php文件操作相关类实例
2015/06/18 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
javascript new fun的执行过程
2010/08/05 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
原生JS轮播图插件
2017/02/09 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
详解Python中的元组与逻辑运算符
2015/10/13 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
房屋租赁协议书
2014/04/10 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
学生会个人总结范文
2015/02/15 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书