当前位置:首页 > 行业动态 > 正文

Flask导出PDF

Flask是一个用Python编写的轻量级Web应用框架,它提供了一种简单而灵活的方式来构建Web应用,在Flask中,我们可以使用第三方库如ReportLab来生成PDF文件,本文将详细介绍如何使用Flask和ReportLab库来导出PDF文件。

Flask导出PDF  第1张

1、安装所需库

我们需要安装Flask和ReportLab库,可以使用以下命令安装:

pip install flask
pip install reportlab

2、创建Flask应用

接下来,我们创建一个Flask应用,在项目目录下创建一个名为app.py的文件,并添加以下代码:

from flask import Flask, render_template, send_file
import os
from reportlab.lib.pagesizes import letter, landscape
from reportlab.pdfgen import canvas
app = Flask(__name__)
@app.route('/')
def index():
    return render_template('index.html')
@app.route('/download/<filename>')
def download(filename):
    return send_file(os.path.join('static', filename), as_attachment=True)
if __name__ == '__main__':
    app.run(debug=True)

这里我们导入了所需的库,并创建了一个Flask应用,我们还定义了两个路由:一个用于显示HTML页面,另一个用于下载生成的PDF文件。

3、创建HTML模板

接下来,我们需要创建一个HTML模板,在项目目录下创建一个名为templates的文件夹,并在其中创建一个名为index.html的文件,添加以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF8">
    <meta name="viewport" content="width=devicewidth, initialscale=1.0">
    <title>PDF生成示例</title>
</head>
<body>
    <h1>欢迎来到PDF生成示例页面!</h1>
    <form action="/download/sample.pdf" method="post">
        <button type="submit">生成PDF并下载</button>
    </form>
</body>
</html>

这个HTML模板包含一个简单的表单,用户可以通过点击“生成PDF并下载”按钮来生成PDF文件。

4、生成PDF文件

现在我们需要实现生成PDF文件的功能,在app.py文件中添加以下代码:

@app.route('/generate/<filename>')
def generate(filename):
    c = canvas.Canvas(os.path.join('static', filename), pagesize=landscape(letter))
    c.setFont("Helvetica", 12)
    c.drawString(100, 750, "欢迎来到PDF生成示例!")
    c.save()
    return render_template('generated.html', filename=filename)

这里我们定义了一个新的路由/generate/<filename>,用于生成PDF文件并将其保存到静态文件夹中,我们还创建了一个新的HTML模板generated.html,用于显示生成的PDF文件,在generated.html文件中添加以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF8">
    <meta name="viewport" content="width=devicewidth, initialscale=1.0">
    <title>PDF生成成功</title>
</head>
<body>
    <h1>PDF生成成功!</h1>
    <p><a href="{{ url_for('download', filename=filename) }}">点击下载生成的PDF文件</a></p>
</body>
</html>

5、运行Flask应用

我们运行Flask应用,在命令行中输入以下命令:

python app.py

现在,你可以访问http://127.0.0.1:5000/查看HTML页面,点击“生成PDF并下载”按钮,将生成一个名为sample.pdf的PDF文件并提供下载链接,点击链接可以下载生成的PDF文件,你还可以通过访问http://127.0.0.1:5000/generate/sample.pdf直接生成并下载PDF文件。

0