如何在 ReportLab 的内存中生成 pdf

Erf*_*fan 5 python reportlab

就我而言,我想在 Flask 应用程序的内存中生成 PDF,这样我就可以直接将其作为下载发送给用户,而不是先将其保存到磁盘。

我们现在的代码:

import os
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4


# normally this in a class but I simplified it for the example
c = canvas.Canvas(os.path.join("mypath", "report.pdf"), pagesize=A4)
c.drawString(100, 100, "Hello World")
c.save()
Run Code Online (Sandbox Code Playgroud)

Erf*_*fan 9

直接保存在内存中使用io.BytesIO

from io import BytesIO
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4


buffer = BytesIO()
c = canvas.Canvas(buffer, pagesize=A4)
c.drawString(100, 100, "Hello World")
c.save()

# then do something with buffer, for example:
pdf = buffer.getvalue()
Run Code Online (Sandbox Code Playgroud)