这与此post
有点相关我正在尝试在背景上放置图像,我希望能够在其上面写入文字。
使用canvas.drawImage
有帮助,但这对我来说太低级了。
我的程序使用platypus,但canvas.drawImage
是不同库的一部分。
我已经能够使用platypus.Image
插入图像,但无法弄清楚如何将其作为背景
任何建议都会很棒,
由于 d
答案 0 :(得分: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