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脚本
Sep 01 Python
python抽象基类用法实例分析
Jun 04 Python
Python人脸识别初探
Dec 21 Python
解决python使用open打开文件中文乱码的问题
Dec 29 Python
快速了解Python开发中的cookie及简单代码示例
Jan 17 Python
详解Python 函数如何重载?
Apr 23 Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
Jan 27 Python
python 中[0]*2与0*2的区别说明
May 10 Python
如何用Python搭建gRPC服务
Jun 30 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
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
php查看当前Session的ID实例
2015/03/16 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
兼容ie和firefox js关闭代码
2008/12/11 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
Python实现从百度API获取天气的方法
2015/03/11 Python
简单了解python的内存管理机制
2019/07/08 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
浅谈Python_Openpyxl使用(最全总结)
2019/09/05 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
python3排序的实例方法
2020/10/20 Python
phpquery中文手册
2021/03/18 PHP
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
质检的岗位职责
2013/11/17 职场文书
硕士研究生个人求职信
2013/12/04 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
北京奥运会主题口号
2014/06/13 职场文书
咖啡店创业计划书
2014/08/15 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
2014年文艺部工作总结
2014/11/17 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
焦裕禄观后感
2015/06/03 职场文书