1

背景

我正在编写一些代码来使用SimpleDocTemplate( reportlab.platypus.SimpleDocTemplate) 在 ReportLab 中设置共享文档“模板”[通用页眉和页脚]。下面的代码片段是一个函数,它将作为or参数SimpleDocTemplate build(...)的值传递给方法。onFirstPageonLaterPages

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没有工作感到困惑。

4

0 回答 0