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

  • 相关阅读:
    SignalR实现服务器与客户端的实时通信
    UIWebView全解
    查漏补缺
    Django的生命周期图解
    权限系统(第一次测试)
    Django权限管理测试
    Django_自带的admin管理页面
    django笔记整理
    cookie/session(过时的写法)
    图书管理系统设置登录验证(cookies)
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144741.html
Copyright © 2011-2022 走看看