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操作MySQL简单实现方法
Jan 26 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
Python随机生成均匀分布在单位圆内的点代码示例
Nov 13 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
Django 5种类型Session使用方法解析
Apr 29 Python
Pycharm修改python路径过程图解
May 22 Python
python实现批量转换图片为黑白
Jun 16 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
Aug 07 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
python实现图片九宫格分割的示例
Apr 25 Python
Python学习之异常中的finally使用详解
Mar 16 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中explode函数用法分析
2014/11/15 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
php中让人头疼的浮点数运算分析
2016/10/10 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
JS定时器实例
2013/04/17 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
django1.11.1 models 数据库同步方法
2018/05/30 Python
python中的变量如何开辟内存
2018/06/26 Python
Python实现八皇后问题示例代码
2018/12/09 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
python绘制玫瑰的实现代码
2020/03/02 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
保密工作承诺书
2014/08/29 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js