生成PDF文件 阅读: 25612     评论:3
ReportLab

一、安装ReportLab

ReportLab库在PyPI上提供,可以使用pip来安装:

$ pip install reportlab

在Python交互解释器中导入它来测试安装:

>>> import reportlab

如果没有抛出任何错误,证明已安装成功。

二、编写视图

FileResponse

这有个 "Hello World" 示例:

import io
from django.http import FileResponse
from reportlab.pdfgen import canvas

def some_view(request):
    # Create a file-like buffer to receive PDF data.
    buffer = io.BytesIO()

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

    # 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()

    # FileResponse sets the Content-Disposition header so that browsers
    # present the option to save the file.
    buffer.seek(0)
    return FileResponse(buffer, as_attachment=True, filename='hello.pdf')

相关说明:

application/pdfas_attachment=TrueFileResponseContent-Dispositionas_attachmentfilename“另存为…”pbuffershowPage()save()
 生成CSV文件 类视图 

评论总数: 3

user_image

默认不支持中文。需要注册中文字体。


By   蔷薇-Nina    On   2019年7月10日 22:17   回复

user_image

刘老师,您好!我都是把生成好的pdf放在服务器的文件夹里面,io库作为pdf临时保存地点是否可以提高生成pdf和下载pdf的速度?如果不可以,那这个库的作用是什么?盼回复,感谢~~~~


By   蔡可夫斯基的冒险之旅    On   2018年10月24日 16:50   回复

user_image

网上搜索一下,查查资料吧,看看有没有人讨论过这个问题。


 博主   回复   蔡可夫斯基的冒险之旅 2018年10月25日 08:59   回复