django reportlab将pdf附加到电子邮件,将pdf保存到服务器,在浏览器中显示pdf

时间:2013-10-26 06:53:24

标签: django pdf-generation reportlab

关于使用django中的报告实验室生成的pdf,我有三个问题,我似乎无法找到一个好的答案。 django网站上的文档仅涵盖了如何生成pdf以供下载。但是,如何将生成的pdf附加到电子邮件并发送而不是下载?如何将pdf保存到服务器上的目录而不是下载?如何在浏览器窗口中显示pdf而不是下载?只需使用django文档示例:

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

def some_view(request):
    # Create the HttpResponse object with the appropriate PDF headers.
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'

    # Create the PDF object, using the response object as its "file."
    p = canvas.Canvas(response)

    # Draw things on the PDF. Here's where the PDF generation happens.
    # See the ReportLab documentation for the full list of functionality.
    p.drawString(100, 100, "Hello world.")

    # Close the PDF object cleanly, and we're done.
    p.showPage()
    p.save()
    return response

2 个答案:

答案 0 :(得分:3)

要在浏览器上显示de PDF而不是下载,您只需从

中删除附件一词
response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'

你会有这样的东西

response['Content-Disposition'] = 'filename="somefilename.pdf"'

答案 1 :(得分:1)

您可以将常规文件名传递给Canvas()而不是类似文件的对象。您通常应该将下一个参数传递给pagesize - 默认为A4。

有关所有详细信息,请下载用户指南& ReportLab的参考指南:

http://www.reportlab.com/docs/reportlab-userguide.pdf

见第10页。