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')
    
    

  • 相关阅读:
    设计模式—简单工厂、工厂方法、抽象工厂
    设计模式—抽象工厂
    设计模式—工厂模式
    java设计模式—设计模式概述
    java设计模式—单例模式
    【转】谈谈我对服务熔断、服务降级的理解
    Python使用笔记005-文件操作(二)
    python使用笔记004-冒泡排序
    Jmeter使用笔记001
    python使用笔记003-文件操作(一)
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144742.html
Copyright © 2011-2022 走看看