zoukankan      html  css  js  c++  java
  • reportlab使用示例:文字和图片

    Python的reportlab专门将数据使用生成PDF中的图形和文档功能,

    下载ReportLab

    https://pypi.python.org/simple/reportlab/

    http://www.reportlab.com/software/opensource/rl-toolkit/download/

    生成一个简单的helloworld

    from reportlab.graphics.shapes import Drawing, String
    from reportlab.graphics import renderPDF
     
    d = Drawing(100, 100)
    s = String(50, 50, 'Hello, world!', textAnchor='middle') 
    d.add(s)
     
    renderPDF.drawToFile(d, 'hello.pdf', 'A simple PDF file')



     

    三条折线

    from reportlab.lib import colors
    from reportlab.graphics.shapes import *
    from reportlab.graphics import renderPDF
    
    data = [
    #    Year  Month  Predicted  High  Low
        (2007,  8,    113.2,     114.2, 112.2),
        (2007,  9,    112.8,     115.8, 109.8),
        (2007, 10,    111.0,     116.0, 106.0),
        (2007, 11,    109.8,     116.8, 102.8),
        (2007, 12,    107.3,     115.3,  99.3),
        (2008,  1,    105.2,     114.2,  96.2),
        (2008,  2,    104.1,     114.1,  94.1),
        (2008,  3,     99.9,     110.9,  88.9),
        (2008,  4,     94.8,     106.8,  82.8),
        (2008,  5,     91.2,     104.2,  78.2),
        ]
    
    drawing = Drawing(200, 150)
    
    pred = [row[2]-40 for row in data]
    high = [row[3]-40 for row in data]
    low = [row[4]-40 for row in data]
    times = [200*((row[0] + row[1]/12.0) - 2007)-110 for row in data]
    
    drawing.add(PolyLine(zip(times, pred), strokeColor=colors.blue))
    drawing.add(PolyLine(zip(times, high), strokeColor=colors.red))
    drawing.add(PolyLine(zip(times, low),  strokeColor=colors.green))
    
    drawing.add(String(65, 115, 'Sunspots', fontSize=18, fillColor=colors.red))
    
    renderPDF.drawToFile(drawing, 'report1.pdf', 'Sunspots')


     

    最终的sunspot

    from urllib import urlopen
    from reportlab.graphics.shapes import *
    from reportlab.graphics.charts.lineplots import LinePlot
    from reportlab.graphics.charts.textlabels import Label
    from reportlab.graphics import renderPDF
    
    URL = 'http://www.swpc.noaa.gov/ftpdir/weekly/Predict.txt'
    COMMENT_CHARS = '#:'
    
    
    drawing = Drawing(400, 200)
    data = []
    for line in urlopen(URL).readlines():
        if not line.isspace() and not line[0] in COMMENT_CHARS:
            data.append([float(n) for n in line.split()])
    
    pred = [row[2] for row in data]
    high = [row[3] for row in data]
    low = [row[4] for row in data]
    times = [row[0] + row[1]/12.0 for row in data]
    
    lp = LinePlot()
    lp.x = 50
    lp.y = 50
    lp.height = 125
    lp.width = 300
    lp.data = [zip(times, pred), zip(times, high), zip(times, low)]
    lp.lines[0].strokeColor = colors.blue
    lp.lines[1].strokeColor = colors.red
    lp.lines[2].strokeColor = colors.green
    
    drawing.add(lp)
    
    drawing.add(String(250, 150, 'Sunspots',
                fontSize=14, fillColor=colors.red))
    
    
    renderPDF.drawToFile(drawing, 'report2.pdf', 'Sunspots')
    
    

  • 相关阅读:
    【C语言入门教程】5.1 函数说明 与 返回值
    【C语言入门教程】4.10 综合实例
    【C语言入门教程】4.9 指向指针的指针
    【C语言入门教程】4.8 指针数组
    【C语言入门教程】4.7 指针的地址分配
    Windows 7 共享文件夹 给 VirtualBox 中的 Ubuntu 14
    【C语言入门教程】4.6 指针 和 数组
    Ubuntu 12/14 个性化配置
    【C语言入门教程】4.5 指针变量的定义与引用
    【C语言入门教程】4.4 指针 与 指针变量
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144742.html
Copyright © 2011-2022 走看看