背景
我正在编写一些代码来使用SimpleDocTemplate
( reportlab.platypus.SimpleDocTemplate
) 在 ReportLab 中设置共享文档“模板”[通用页眉和页脚]。下面的代码片段是一个函数,它将作为or参数SimpleDocTemplate
build(...)
的值传递给方法。onFirstPage
onLaterPages
def setup_header_and_footer(canvas, doc):
"""
...edited out...
"""
canvas.line(0 * mm, 174 * mm, 297 * mm, 174 * mm)
logo_filename = settings.STATIC_ROOT + os.sep + "images/huqas_logo.jpg"
canvas.drawImage(logo_filename, 20 * mm, 45 * mm)
canvas.drawRightString(287 * mm, 200 * mm, "<edited out>")
canvas.drawString(20 * mm, 15 * mm, "Generated on %s" % datetime.now().strftime("%A %d %B %Y %I:%M:%S %p"))
canvas.line(0 * mm, 20 * mm, 297 * mm, 20 * mm)
更多信息
- 页面/画布已设置为 A4 横向尺寸
- 我已确认 logo_filename 是有效路径,并且图像存在于文件系统中的该位置
- Reportlab 没有引发任何异常
问题
- 我的线条和字符串渲染正常,但图像在生成的 PDF 中不可见
我已经看过这个问题,但我仍然不明白为什么画布在调用时会“表现”例如canvas.line(0 * mm, 174 * mm, 297 * mm, 174 * mm)
但在调用时失败canvas.drawImage("file name", 20 * mm, 45 * mm)
。我也搜索了文档无济于事。我错过了什么?
更新
从 更改canvas.drawImage(logo_filename, 20 * mm, 45 * mm)
为canvas.drawInlineImage(logo_filename, 20 * mm, 45 * mm)
似乎“解决”了问题[不更改任何其他代码行]。我仍然对为什么drawImage
没有工作感到困惑。