当前位置: 首页 > article >正文

Python+VUE生成PDF小案例

首先,我们需要准备工作环境:

  • 安装 Python3,并安装需要的第三方库 flaskpdfkit
  • 下载并安装 wkhtmltopdf 工具

接下来就可以进入到程序设计阶段了。步骤如下:

  1. 在 Vue.js 中设置表单项制作 PDF 的数据;
  2. 在前端使用 Axios 发送请求将 JSON 数据发送至后端 Flask 服务器;
  3. 后端通过 Flask 接收JSON数据,并调用 pdfkit 库将 HTML 模板转换为证明文件 PDF;
  4. 将 PDF 文件返回给前端进行下载或打印等操作。

Python 后台服务示例(Flask):

from flask import Flask, request
import pdfkit   # 主要负责 Html -> Pdf 相关处理

app = Flask(__name__)

@app.route('/generate_pdf', methods=['POST'])
def generate_pdf():
    req_data = request.get_json()
    
    # 解析传入参数 
    name = req_data['name']
    age = req_data['age']

    # 创建PDF文档HTML模板 
    html_template = f"""
      <html>  
        <head>  
          <meta charset="UTF-8"> 
          <title>Hello World</title>
        </head>
          
        <body style="width:800px;margin:0 auto;font-size:14px;">
            姓名: {name} ,年龄: {age}
        </body>
      </html>"""

     # 调用PdfKit库进行Html → Pdf 转换处理 
    pdf_file = pdfkit.from_string(html_template, False)

     # 返回生成的PDF文件数据 
    response = make_response(pdf_file)
    response.headers['Content-Type'] = 'application/pdf'
    return response

Vue.js 代码,用于触发 PDF 生成请求:

<template>
  <div class="generate-pdf">
      <button type="submit" @click.prevent="generatePdf">生成PDF</button>
 </div>
</template>

<script>
import axios from 'axios';

export default {
   name: "GeneratePdf",
   methods: {   
       generatePdf() {
           axios.post('/generate_pdf', this.formData,{
               responseType: 'arraybuffer',
           }).then(response => {
              let blobUrl= window.URL.createObjectURL(new Blob([response.data]));
              window.open(blobUrl);
          }).catch(err => alert('无法生成证明'));
       }
   },
}
</script>

以上代码分别为后端 Flask 和前端 Vue 中处理PDF相关功能的核心部分示例。这里我们采用总体都很简单、易读性较高等特点非常适合初学者尝试入门。

要使用它,请确保本机已经安装好上述工具依赖项,如果遇到问题请查阅文档或进行咨询获取帮助。


http://www.kler.cn/news/11961.html

相关文章:

  • Ansible——介绍ansible
  • 计算专题(小计算题)
  • ubuntu中通过vscode编译调试ORB-SLAM3
  • 图文在线翻译-文本翻译
  • 流程管理中间件BPS二期项目立项准备工作经验分享
  • 测试包的更新
  • 二、JS02 BOM操作
  • 用了这几个方法,Facebook广告转化真上去了!
  • 优思学院|质量大师的那些名言(一)【质量是免费的】
  • 《算法竞赛进阶指南》0x51 线性DP
  • 计及氢能的综合能源优化调度研究(Matlab代码实现)
  • Yolov5一些知识
  • JUC并发编程之读写锁原理
  • 01 |「ChatGPT」简介
  • 机器学习算法系列(三)
  • 命令设计模式(Command Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]
  • 【计算机图形学】扫描转换算法(Bresenham1/4圆法 椭圆两头逼近法 方形刷子)
  • 密度聚类算法(DBSCAN)实验案例
  • LeetCode每日一题 1023. 驼峰式匹配 --双指针
  • 零零信安-DD数据泄露报警日报 【第144期】
  • MySQL创建数据表(CREATE TABLE语句)
  • [STM32F103C8T6]DMA
  • 4.17日报
  • 代码随想录算法训练营第三十九天-动态规划2|62.不同路径 , 63. 不同路径 II
  • 原生JS + HTML + CSS 实现快递物流信息 API 的数据链式展示
  • RabbitMQ之介绍
  • 2023TYUT移动应用软件开发程序修改题
  • C/C++程序设计——static关键字
  • NumPy 秘籍中文第二版:四、将 NumPy 与世界的其他地方连接
  • 「数字信号处理」MATLAB设计 双音多频拨号系统