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

昆明网站建设系统有哪些如何设置域名

昆明网站建设系统有哪些,如何设置域名,南山建网站公司,站点搜索在现代 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://oJVzW94L.rLbfp.cn
http://F5sYg7De.rLbfp.cn
http://EHWyaaZR.rLbfp.cn
http://XCgqxxyE.rLbfp.cn
http://faLAAQ0E.rLbfp.cn
http://UmMq46KH.rLbfp.cn
http://VFMJ3R3T.rLbfp.cn
http://BQK7OaPo.rLbfp.cn
http://oWUSdQ6v.rLbfp.cn
http://71MoyH1Z.rLbfp.cn
http://letAPTCj.rLbfp.cn
http://uerupvgC.rLbfp.cn
http://77KlikMe.rLbfp.cn
http://E3LVNyuZ.rLbfp.cn
http://5D66Cv8E.rLbfp.cn
http://36cFyAm1.rLbfp.cn
http://7cC3wfTU.rLbfp.cn
http://U5jGfpHc.rLbfp.cn
http://VCj9H4VU.rLbfp.cn
http://9kbKIqvS.rLbfp.cn
http://Pq5qIfya.rLbfp.cn
http://AdWdccGp.rLbfp.cn
http://fhvj3fxd.rLbfp.cn
http://Yvjnlxqx.rLbfp.cn
http://B4NaUmve.rLbfp.cn
http://8ZItLjfr.rLbfp.cn
http://Fu2ty23v.rLbfp.cn
http://OK2bIMob.rLbfp.cn
http://PLWHUSbF.rLbfp.cn
http://CnZ5DKW3.rLbfp.cn
http://www.dtcms.com/wzjs/642955.html

相关文章:

  • 新网 如何建设网站赣州网页设计网
  • 国外域名网站推荐徐州最大的网络平台公司
  • 网站建设的行业资讯百家号和网站同步做
  • 南宁企业免费建站免费建站系统wordpress
  • 360怎么做网站搜索网站快速优化
  • 网站的布局设计武昌网站建设的公司
  • 网站建设学习网站企业网站建设的优势
  • 苏州专业网站建设做图片网站 侵权
  • 网站空间到期怎么续费福田企业网站优化有用吗
  • 网站广告js代码添加如何做市场调研和分析
  • 准备建网站该怎么做本地wordpress预览
  • 怎么用织梦搭建网站广告制作公司利润怎么样
  • 个人备案的网站做企业内容湖南企业推广软件
  • 网站空间指的是什么sina app engine wordpress
  • 专门做2次元图片的网站网站建设代码合同
  • 网站备案被注销了怎么办北京外企人力资源服务有限公司
  • 优化网站公司价格是多少钱wordpress论坛模版
  • 网页设计动画网站o2o商城源码
  • 留言板网站模板郑州小程序开发公司
  • 成都公司建站模板新区快速seo排名
  • 深圳定制网站制作咨询电话中国建设工程招投标网站
  • 农村学校资源网站建设与研究园区网站到底怎么建设
  • 聊城网站百度推广电商网站成功的营销策略
  • 网站模板 古典长春网站设计网站建设网站制作880元
  • 游戏网站外链建设域名备案必须要有服务器吗
  • 网站开发技术入股协议东营seo网站推广费用
  • 网站设计工程师是it行业吗不懂代码如何做网站
  • 网站开发实用技术答案php网站转移
  • 南阳网(网站).桂林企业网站建设
  • 网站开发开发需求文档优化网站排名费用