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

邢台移动网站建设报价html简单网页设计作品

邢台移动网站建设报价,html简单网页设计作品,wordpress可以问答,做好网站如何发布在现代 Web 开发中,生成 PDF 文档并在其上添加盖章是常见的需求。本文将详细介绍如何使用 Flask 框架和 pdfkit 库来批量生成 PDF,并在其中添加透明 PNG 盖章,最后将生成的 PDF 上传到阿里云 OSS(对象存储服务)。 环境…

在现代 Web 开发中,生成 PDF 文档并在其上添加盖章是常见的需求。本文将详细介绍如何使用 Flask 框架和 pdfkit 库来批量生成 PDF,并在其中添加透明 PNG 盖章,最后将生成的 PDF 上传到阿里云 OSS(对象存储服务)。

环境准备

首先,确保您的开发环境中已安装以下依赖:

pip install Flask pdfkit Pillow PyPDF2 aliyun-oss2

此外,您还需要安装 wkhtmltopdf,这是 pdfkit 的依赖。根据您的操作系统选择安装方式:

  • Ubuntu:

    sudo apt-get install wkhtmltopdf
    
  • CentOS:

    sudo yum install wkhtmltopdf
    

项目结构

以下是 Flask 应用的基本结构:

/your_project
│
├── app.py               # 主应用文件
├── uploads              # 存放生成的 PDF 文件
└── stamp.png            # 透明 PNG 盖章文件

确保将您的透明 PNG 盖章文件放在项目目录中。

Flask 应用代码

以下是完整的 Flask 应用代码,包含生成 PDF、添加盖章以及上传到 OSS 的功能:

from flask import Flask, request, jsonify, send_file
import pdfkit
import os
from PIL import Image
from werkzeug.utils import secure_filename
import oss2app = Flask(__name__)# 设置上传文件的目录
UPLOAD_FOLDER = 'uploads'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER# OSS 配置
OSS_ACCESS_KEY_ID = 'your_access_key_id'
OSS_ACCESS_KEY_SECRET = 'your_access_key_secret'
OSS_ENDPOINT = 'your_oss_endpoint'  # 例如 'oss-cn-region.aliyuncs.com'
OSS_BUCKET_NAME = 'your_bucket_name'# 初始化 OSS 客户端
auth = oss2.Auth(OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET)
bucket = oss2.Bucket(auth, OSS_ENDPOINT, OSS_BUCKET_NAME)# PDF 生成函数
def create_pdf(html_content, output_path):pdfkit.from_string(html_content, output_path)# 加盖章函数
def add_stamp_to_pdf(pdf_path, stamp_path, output_path):from PyPDF2 import PdfWriter, PdfReaderstamp = Image.open(stamp_path)stamp.save('temp_stamp.pdf', "PDF")with open(pdf_path, "rb") as pdf_file, open('temp_stamp.pdf', "rb") as stamp_file:pdf_reader = PdfReader(pdf_file)stamp_reader = PdfReader(stamp_file)writer = PdfWriter()for page in pdf_reader.pages:page.merge_page(stamp_reader.pages[0])writer.add_page(page)with open(output_path, "wb") as output_file:writer.write(output_file)# 上传文件到 OSS
def upload_to_oss(file_path, object_name):bucket.put_object_from_file(object_name, file_path)@app.route('/generate_pdf', methods=['POST'])
def generate_pdf():data = request.get_json()if not data or 'html_content' not in data:return jsonify({"error": "Invalid input"}), 400html_content = data['html_content']stamp_path = data.get('stamp_path')  # 可选盖章路径filename = secure_filename('output.pdf')output_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)try:create_pdf(html_content, output_path)if stamp_path:output_path_with_stamp = os.path.join(app.config['UPLOAD_FOLDER'], 'stamped_' + filename)add_stamp_to_pdf(output_path, stamp_path, output_path_with_stamp)# 上传到 OSSupload_to_oss(output_path_with_stamp, 'pdfs/' + filename)return send_file(output_path_with_stamp, as_attachment=True)# 上传到 OSSupload_to_oss(output_path, 'pdfs/' + filename)return send_file(output_path, as_attachment=True)except Exception as e:return jsonify({"error": str(e)}), 500@app.route('/batch_generate', methods=['POST'])
def batch_generate():data = request.get_json()if not data or 'html_contents' not in data:return jsonify({"error": "Invalid input"}), 400output_files = []stamp_path = data.get('stamp_path')  # 可选盖章路径for index, html_content in enumerate(data['html_contents']):filename = secure_filename(f'output_{index}.pdf')output_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)try:create_pdf(html_content, output_path)if stamp_path:output_path_with_stamp = os.path.join(app.config['UPLOAD_FOLDER'], 'stamped_' + filename)add_stamp_to_pdf(output_path, stamp_path, output_path_with_stamp)# 上传到 OSSupload_to_oss(output_path_with_stamp, 'pdfs/' + filename)output_files.append(output_path_with_stamp)else:# 上传到 OSSupload_to_oss(output_path, 'pdfs/' + filename)output_files.append(output_path)except Exception as e:return jsonify({"error": f"Failed to generate PDF {index}: {str(e)}"}), 500return jsonify({"message": "PDFs generated and uploaded to OSS", "files": output_files}), 200if __name__ == '__main__':app.run(debug=True)

代码解析

1. 环境设置

在代码中设置了上传文件的目录,并确保该目录存在。

2. OSS 配置

配置阿里云 OSS 的访问密钥和存储桶信息,并初始化 OSS 客户端。

3. PDF 生成函数

使用 pdfkit 从 HTML 内容生成 PDF 文件。

4. 加盖章函数

使用 Pillow 加载透明 PNG 盖章,并使用 PyPDF2 将其添加到生成的 PDF 上。

5. 上传文件到 OSS

创建 upload_to_oss 函数,将生成的 PDF 文件上传到阿里云 OSS。

6. API 端点

  • /generate_pdf:接收单个 HTML 内容和可选的盖章 PNG 路径,生成 PDF 并上传到 OSS。
  • /batch_generate:接收多个 HTML 内容和可选的盖章 PNG 路径,批量生成 PDF 并上传到 OSS。

使用示例

生成单个 PDF

/generate_pdf 发送 POST 请求,包含 HTML 内容和可选的 PNG 图片路径:

{"html_content": "<h1>Hello, World!</h1>","stamp_path": "path/to/stamp.png"
}

批量生成 PDF

/batch_generate 发送 POST 请求,包含多个 HTML 内容和可选的 PNG 图片路径:

{"html_contents": ["<h1>Document 1</h1>","<h1>Document 2</h1>"],"stamp_path": "path/to/stamp.png"
}

注意事项

  • 安全性:妥善管理您的 OSS 密钥信息,避免在公共代码中暴露。
  • OSS 权限:确保您的阿里云 OSS 存储桶具有相应的权限,以允许上传和访问文件。

总结

通过使用 Flask、pdfkit、透明 PNG 图片和阿里云 OSS,您可以轻松地生成带有盖章的 PDF 文档,并将其上传到云端存储。这种方法在处理大量文档时特别有用,可以有效提高工作效率。

http://www.dtcms.com/wzjs/81709.html

相关文章:

  • 价格低的跑车杭州seo优化公司
  • 青岛网络平台宁波优化seo是什么
  • 简述网站开发具体流程图优化用户体验
  • 网站建设规划设计公司百度指数免费添加
  • 下单的网站建设教程新发布的新闻
  • 沈阳企业网站排名优化seo有哪些作用
  • 石家庄站内换乘示意图百度快速收录账号购买
  • 网站建设免费建站优化设计四年级上册语文答案
  • 永州市建设局网站营销型企业网站案例
  • 别人的抖音网站是怎么做的百度站长平台有哪些功能
  • 怎么用html5做自适应网站申京效率值联盟第一
  • b2b电商网站开发免费创建网站平台
  • 推广型网站制作公司百度app下载最新版
  • 宠物网站建设方案书怎样创建自己的网站
  • 织梦做中英文网站seo网站推广优化就找微源优化
  • 创意网站 模板google关键词挖掘工具
  • 玄武营销型网站制作厂家软文推广名词解释
  • 如何用电子邮箱做网站google应用商店
  • 网站后台图片做链接怎么去推广自己的店铺
  • 做最好的在线中文绅士本子阅读网站中国国家数据统计网
  • 企业网站建设的主要内容seo常用优化技巧
  • 崇仁网站建设推广费用搜索引擎优化是什么意思
  • 做服装在哪个网站找网站优化排名哪家好
  • 做网站banner是什么意思天津seo技术教程
  • 020网站建设和维护费用线上推广方案模板
  • 自己建设网站服务器天津百度seo推广
  • iis限制网站带宽网店
  • 国内知名网站2022年可以打开的网址
  • 小说网站系统怎么做semir是什么意思
  • 南阳做网站多少费用备案查询站长工具