reportlab: добавить фоновое изображение с помощью утконоса
Это немного связано с этим постом
Я пытаюсь разместить изображение на заднем плане, и я хочу иметь возможность писать текст поверх него. с помощью canvas.drawImage
помогает, но это слишком низкоуровневый подход для меня.
Моя программа использует утконоса, но canvas.drawImage
является частью другой библиотеки. Я был в состоянии вставить изображения с platypus.Image
, но не мог понять, как сделать это в качестве фона.
Любой совет будет полезен,
Спасибо д
1 ответ
Когда вы создаете шаблон страницы в 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