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中使用tarfile压缩、解压tar归档文件示例
Apr 05 Python
Python实现把xml或xsl转换为html格式
Apr 08 Python
在Python中使用NLTK库实现对词干的提取的教程
Apr 08 Python
python使用pil生成图片验证码的方法
May 08 Python
在Python中用split()方法分割字符串的使用介绍
May 20 Python
对Python 网络设备巡检脚本的实例讲解
Apr 22 Python
django自带调试服务器的使用详解
Aug 29 Python
Python jieba库用法及实例解析
Nov 04 Python
python3中numpy函数tile的用法详解
Dec 04 Python
Python稀疏矩阵及参数保存代码实现
Apr 18 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
Flask搭建一个API服务器的步骤
May 28 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下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
Python内置函数dir详解
2015/04/14 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
如何基于python操作excel并获取内容
2019/12/24 Python
Python实现分数序列求和
2020/02/25 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
MCAKE蛋糕官方网站:一直都是巴黎的味道
2018/02/06 全球购物
代理商会议邀请函
2014/01/27 职场文书
篮球赛口号
2014/06/18 职场文书
朋友聚会开场白
2015/06/01 职场文书
反腐倡廉观后感
2015/06/08 职场文书
《打电话》教学反思
2016/02/22 职场文书
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript