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线程锁(thread)学习示例
Dec 04 Python
跟老齐学Python之玩转字符串(2)更新篇
Sep 28 Python
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
深入理解Python中变量赋值的问题
Jan 12 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
浅谈Python type的使用
Nov 19 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 Python
基于plt.title无法显示中文的快速解决
May 16 Python
Python3 webservice接口测试代码详解
Jun 23 Python
python 实现表情识别
Nov 21 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
Nov 28 Python
Flask中jinja2的继承实现方法及实例
Mar 03 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 daodb插入、更新与删除数据
2009/03/19 PHP
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
解析PHP对现有搜索引擎的调用
2013/06/25 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
js仿淘宝商品放大预览功能
2017/03/15 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
一张图带我们入门Python基础教程
2017/02/05 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
中职生自荐信
2013/10/13 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
Python Socket编程详解
2021/04/25 Python