【问题标题】:Multiple pages using Reportlab - Django使用 Reportlab 的多个页面 - Django
【发布时间】:2013-09-10 22:26:00
【问题描述】:

我在一个使用 Django 的站点中工作,并使用 Repotlab 打印一个 .pdf 文件。

现在,我希望文件有多个页面,我该怎么做?

我的代码:

from reportlab.pdfgen import canvas
from django.http import HttpResponse

def Print_PDF(request):
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="resume.pdf"'

    p = canvas.Canvas(response)

    p.drawString(100, 100, "Some text in first page.")
    p.drawString(200, 100, "Some text in second page.")
    p.drawString(300, 100, "Some text in third page")

    p.showPage()
    p.save()
    return response

提前致谢。

【问题讨论】:

    标签: python django reportlab


    【解决方案1】:

    showPage(),尽管名称令人困惑,但实际上会结束当前页面,因此您在调用后在画布上绘制的任何内容都会进入下一页。

    在您的示例中,您可以在每个 p.drawString 示例之后使用 p.showPage(),它们都会出现在自己的页面上。

    def Print_PDF(request):
        response = HttpResponse(content_type='application/pdf')
        response['Content-Disposition'] = 'attachment; filename="resume.pdf"'
    
        p = canvas.Canvas(response)
    
        p.drawString(100, 100, "Some text in first page.")
        p.showPage()
    
        p.drawString(200, 100, "Some text in second page.")
        p.showPage()
    
        p.drawString(300, 100, "Some text in third page")
        p.showPage()
    
        p.save()
        return response
    

    【讨论】:

    • 我已经知道了,但我无法回答我的名誉问题。您的答案完美,非常感谢。
    • 感谢您简单明了的解释和示例。
    • 当我使用 drawString 方法时,文本会显示在下一页中,但如果我创建一个新的 PDFTextObject 并绘制线条,则不会发生任何事情...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2020-04-09
    相关资源
    最近更新 更多