reportlab:使用platypus添加背景图像

dol*_*ola 3 python image reportlab platypus

这与这篇文章有点相关

我试图在背景上放置一个图像,我希望能够在它上面写文字.使用canvas.drawImage帮助,但这对我来说太低级了.
我的程序使用platypus,但是canvas.drawImage是不同库的一部分.我已经能够插入图像platypus.Image,但无法弄清楚如何使其成为背景.
任何建议都会很棒,

感谢:D

Lar*_*tig 9

在Platypus中创建页面模板时,您可以通过命名参数传递函数onPage.在该功能中,您可以放置​​所有基本页面格式(页眉,页脚,水印,背景图像).

这是一个例子:

def AllPageSetup(canvas, doc):

    canvas.saveState()

    #header
    canvas.drawString(0.5 * inch, 8 * inch, doc.fund.name)
    canvas.drawRightString(10.5 * inch, 8 * inch, doc.report_info)

    #footers
    canvas.drawString(0.5 * inch, 0.5 * inch, 'Larry Co.')
    canvas.drawRightString(10.5 * inch, 0.5 * inch, 'Page %d' % (doc.page))

    canvas.setFont("Helvetica", 240)
    canvas.setStrokeGray(0.90)
    canvas.setFillGray(0.90)
    canvas.drawCentredString(5.5 * inch, 3.25 * inch, doc.watermark)

    canvas.restoreState()

doc = BaseDocTemplate(file_name)

doc.fund = fund # stores my fund object into the document for reference
doc.report_info = "%s %s" % (fund.current_report.date.isoformat(), version)
doc.watermark = 'DRAFT'

page_template = PageTemplate(id="fund_notes", onPage=AllPageSetup, pagesize=page_size)

#Now, every page will have headers, footers, and a watermark
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用 SimpleDocTemplate 构建文档,则可以将页面设置函数传递给 build 方法:doc.build(story, onFirstPage=AllPageSetup, onLaterPages=AllPageSetup) (2认同)