Nig*_*gel 3 django pdf-generation reportlab
我正在尝试从 django 视图生成并输出 PDF。我使用 ReportLab 遵循 django 文档中的示例,但下载的 PDF 未在任何 PDF 阅读器中打开。
我使用Python 3.7.0,Django==2.1.3,reportlab==3.5.12。我尝试添加content_type="application/pdf"到“FileResponse”,但仍然遇到同样的问题。
import io
from django.http import FileResponse
from reportlab.pdfgen import canvas
def printPDF(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)
p.drawString(100, 100, "Hello world.")
p.showPage()
p.save()
return FileResponse(buffer, as_attachment=True, filename='hello.pdf')
Run Code Online (Sandbox Code Playgroud)
生成的 PDF 应该可以在所有 PDF 阅读器中打开。但我收到“无法加载 PDF 文档”。
小智 5
buffer = BytesIO()使用而不是文件来存储pdf文档。在使用 FileResponse 返回之前,您需要将流位置重置为其开始位置:
buffer.seek(io.SEEK_SET)
Run Code Online (Sandbox Code Playgroud)
现在 pdf 下载应该可以按预期工作。
| 归档时间: |
|
| 查看次数: |
4687 次 |
| 最近记录: |