Reportlab画布图像未显示

2024-09-28 17:20:18 发布

您现在位置:Python中文网/ 问答频道 /正文

背景

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

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中图像不可见

我已经看过了this question,但是我仍然不明白为什么画布在调用egcanvas.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不起作用感到困惑。在


Tags: 代码画布linefilenameoutlogocanvasmm