Skip to main content
 首页 » 编程设计

python之返回在 Flask 中使用 FPDF 生成的 PDF

2025年05月04日11birdshome

我可以使用下面的代码生成带有图像的 PDF。如何从 Flask 路由返回生成的 PDF?

from fpdf import FPDF 
pdf = FPDF() 
img = input('enter file name') 
g = img + '.jpg' 
pdf.add_page() 
pdf.image(g, 50, 50) 
pdf.output(img + '.pdf', 'F') 

请您参考如下方法:

使用make_response创建一个响应,将 PDF 数据输出为字符串 ( dest='S' )。 Encode the output as latin-1 ,否则 Flask 会将其编码为 UTF-8,并且它可能无效。设置 Content-Disposition 和 Content-Type header 以告知浏览器下载/处理 PDF 文件。返回构建的响应。

from flask import make_response 
 
@app.route('/jpg_to_pdf/<name>') 
def jpg_to_pdf(name): 
    pdf = FPDF() 
    pdf.add_page() 
    pdf.image(os.path.join(app.instance_path, name + '.jpg'), 50, 50) 
    response = make_response(pdf.output(dest='S').encode('latin-1')) 
    response.headers.set('Content-Disposition', 'attachment', filename=name + '.pdf') 
    response.headers.set('Content-Type', 'application/pdf') 
    return response 

此示例假定图像位于实例文件夹中,根据需要进行修改以指向图像的实际位置。