用python的reportlab库生成PDF报表

Python   2013-12-27 22:42:11 发布
您的评价:
     
0.0
收藏     0收藏
文件夹
标签
(多个标签用逗号分隔)
reportlab不是python的标准库,它的强大之处在于能满足绝大部分报表的需求形式,这篇文章将介绍reportlab中基本常用的api,使用canvas画出一份整洁的PDF报表

前言

     reportlab不是python的标准库,它的强大之处在于能满足绝大部分报表的需求形式,这篇文章将介绍reportlab中基本常用的api,使用canvas画出一份整洁的PDF报表。内容均来自reportlab的官方user guide

依赖与安装

    首先,这里是官方的installation guide。reportlab目前应该只是支持到python2.7, py3的同学另想办法吧。
    楼主的环境:fedora18 64bit

  • 安装python2.7 or 2.6 or 2.5
  • PIL:如果你有图片的操作需要这个库,python imaging library ,下载地址。   
    $ tar xvfz Imaging-1.1.7.tar.gz
    $ cd Imaging-1.1.7
    $ python setup.py install
  • 官网上有提到其他的依赖包,如果需要的话可以自行测试,如Diagra。
  • reportlab的安装,使用 easy_install reportlab 或者pip install reportlab就可以
  • 使用

    实例:

    别怪我再提一遍官方的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)              

    另外:

  • showPage()使用后将重置之前字体之类的设置
  • inch作为量度单位是可以的,一张默认纸张的大小,将以最左下角作为(0,0)坐标点,正负为方向
  • 一张纸的高度大约12*inch,宽大约10*inch
  • 两个坐标端点确定一条直线
  • 一条对角线的两个端点坐标确定一个矩形
  • 设置颜色等其他api请参考官方文档
  • 另外的另外:

  • 直接使用api实际是最麻烦的用法,是基础用法。
  • 使用RML,HTML做报表,请参考这里

  • 效果截图
    174851_a1zs_736230.png

    扩展阅读

    Python的pdf生成工具包 - ReportLab
    Python 中利用 reportlab 生成中文PDF范例
    PHP生成PDF文件类库大全
    HTML转PDF的工具 xhtml2pdf
    Python开发的HTML/CSS转PDF的转换器:xhtml2pdf

    为您推荐

    选择一个 Python Web 框架:Django vs Flask vs Pyramid
    基于Html5的网页大头贴
    FreeMarker使用详解
    用python的reportlab库生成PDF报表
    Python 中利用 reportlab 生成中文PDF范例

    更多

    Python
    Python开发
    相关文档  — 更多
    相关经验  — 更多
    相关讨论  — 更多