用python的reportlab库生成PDF报表
jopen
11年前
reportlab不是python的标准库,它的强大之处在于能满足绝大部分报表的需求形式,这篇文章将介绍reportlab中基本常用的api,使用canvas画出一份整洁的PDF报表
前言
reportlab不是python的标准库,它的强大之处在于能满足绝大部分报表的需求形式,这篇文章将介绍reportlab中基本常用的api,使用canvas画出一份整洁的PDF报表。内容均来自reportlab的官方user guide。
依赖与安装
首先,这里是官方的installation guide。reportlab目前应该只是支持到python2.7, py3的同学另想办法吧。
楼主的环境:fedora18 64bit
$ tar xvfz Imaging-1.1.7.tar.gz $ cd Imaging-1.1.7 $ python setup.py install
使用
实例:
别怪我再提一遍官方的user guide,文档是很全的。
我贴出下面的代码来解释基本的使用:
# -*- coding: utf-8 -*- #字体库 import reportlab.lib.fonts #canvas画图的类库 from reportlab.pdfgen.canvas import Canvas #用于定位的inch库,inch将作为我们的高度宽度的单位 from reportlab.lib.units import inch if __name__ == "__main__": #声明Canvas类对象,传入的就是要生成的pdf文件名字 can = Canvas('report.pdf') pdf_head(can, "test for REPORTLAB!") #showpage将保留之前的操作内容之后新建一张空白页 can.showPage() #将所有的页内容存到打开的pdf文件里面。 can.save() def pdf_head(canvas, headtext): #setFont是字体设置的函数,第一个参数是类型,第二个是大小 canvas.setFont("Helvetica-Bold", 11.5) #向一张pdf页面上写string canvas.drawString(1*inch, 10.5*inch, headtext) #画一个矩形,并填充为黑色 canvas.rect(1*inch, 10.3*inch, 6.5*inch, 0.12*inch,fill=1) #画一条直线 canvas.line(1*inch, 10*inch, 7.5*inch, 10*inch)