【问题标题】:How to add a chart to a PDF using ReportLab如何使用 ReportLab 将图表添加到 PDF
【发布时间】:2015-04-22 18:06:07
【问题描述】:

我有一个 python 项目,它使用 ReportLab 从 Python 中的 Web 应用程序中的一些数据生成 PDF。它正在构建一个大文本字符串,然后将其添加到画布,然后从画布生成 PDF。我被要求在 PDF 中间添加折线图。我在 ReportLab 中找到了很多关于如何将图表直接转换为 PDF 的信息,例如:

Adding Graph to Reportlab PDF

但没有关于如何将该图表添加到 PDF 作为其他格式化内容的一部分。这是我正在使用的代码:

class GenPDF(R):
@tornado.web.authenticated
def get(self):
    """takes text and generates PDF"""
    msg = gen_report(subject, test_name)

    filename = "filename.txt"
    self.set_header("Content-Type", 'application/pdf; charset="utf-8"')
    self.set_header("Content-Disposition", "attachment; filename=%s.pdf" %filename)                  
    io = StringIO.StringIO()
    c = canvas.Canvas(io, pagesize=A4)

    imagem = canvas.ImageReader(StringIO.StringIO(open('logo.jpeg', 'rb').read()))
    c.drawImage(imagem, 430, 688, 100, 100) # Draw it in the bottom left, 2 inches high and 2 inches wide

    text = c.beginText()
    text.setTextOrigin(100, 700)
    text.setFont("Times-Roman", 16)
    text.textLine("Test Report")
    text.setFont("Times-Roman", 12)
    text.textLines(msg)
    text.textLines(CLASS_MAP[test_name]['blurb'])
        text.textLine("_____________________________________________________________________________")
    text.textLines(CLASS_MAP[test_name]['scale'])
        text.textLine("_____________________________________________________________________________")
    text.setFont("Times-Roman", 8)

    text.textLines(DISCLAIMER)
    c.drawText(text)


    c.showPage()
    c.save()

    pdf=io.getvalue()
    io.close() 
    self.write(pdf)

我在哪里添加代码来添加图表?我尝试将其添加为绘图,但似乎无法弄清楚我可以将绘图添加到画布或 pdf 本身的位置。

【问题讨论】:

    标签: python pdf canvas reportlab


    【解决方案1】:

    您可以像这样在页面上操纵图表的大小和位置:

    drawing = Drawing(350, 190)
    lc = HorizontalLineChart()
    lc.x = 10
    lc.y = 10
    lc.height = 150
    lc.width = 330
    ...
    drawing.hAlign = 'CENTER'
    drawing.add(lc)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      • 2021-06-27
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      相关资源
      最近更新 更多