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标准库内置函数complex介绍
Nov 25 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
python pandas生成时间列表
Jun 29 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 Python
Python字符串格式化f-string多种功能实现
May 07 Python
python要安装在哪个盘
Jun 15 Python
scrapy实践之翻页爬取的实现
Jan 05 Python
python3判断IP地址的方法
Mar 04 Python
python入门学习关于for else的特殊特性讲解
Nov 20 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函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
怎样自定义一个异常类
2016/09/27 面试题
银行会计职员个人的自我评价
2013/09/29 职场文书
最受欢迎的自我评价
2013/12/22 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js
Python anaconda安装库命令详解
2021/10/16 Python
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript