Flask导出PDF

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

创新互联主要从事成都做网站、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务桃山,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

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/')
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的文件,添加以下代码:




    
    
    PDF生成示例


    

欢迎来到PDF生成示例页面!

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

4、生成PDF文件

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

@app.route('/generate/')
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/,用于生成PDF文件并将其保存到静态文件夹中,我们还创建了一个新的HTML模板generated.html,用于显示生成的PDF文件,在generated.html文件中添加以下代码:




    
    
    PDF生成成功


    

PDF生成成功!

点击下载生成的PDF文件

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文件。

网站标题:Flask导出PDF
文章网址:http://www.hantingmc.com/qtweb/news19/272769.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联