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

  • 相关阅读:
    关于Unity中的NavMeshAgent的remainingDistance问题
    关于Unity中MonoBehaviour的构造函数
    【Unity】Domina-Game总结与反思
    初步理解IOC和DI和AOP模式
    简单并查集归纳
    括号匹配-记错心得
    Django博客项目思路整理
    找零问题
    连续子序列最大和的O(NlogN)算法
    Python-demo(photo)
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144742.html
Copyright © 2011-2022 走看看