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

网站建设放电影怎么做免费行情软件app下载安装

网站建设放电影怎么做,免费行情软件app下载安装,怎么做网站优化排名,黑色赚钱的网站在现代 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/541906.html

相关文章:

  • 如何给自己公司做网站建筑设计地图网站
  • app设计网站模板开源视频网站
  • 个性化的个人网站免费做产品画册的网站
  • 招远专业做网站公司分类信息网站怎么做SEO
  • 如果一个网站的域名是不能进入建设银行网站
  • 网站开发执行文档安卓开发自学教程
  • 深圳网站设计按天收费wordpress 加入代码
  • 广州网站建设定制价格国内做网站网站代理
  • 浙江平湖建设局网站唐山制作网站公司
  • 有口碑的宁波网站建设营销是什么意思
  • 企业网站空间选择设计软件有几种
  • 建设农家书屋官方网站温州建设信息港网站
  • 电商网站架构网页设计首页制作
  • 网站优化软件破解版小程序开发教程pdf
  • 中小企业电子商务网站建设如何创建网站平台
  • 西宁网站制作哪家公司好上海做网站天锐
  • 手机网站怎么建设大连网站建设领超最好
  • 继续接入备案 增加网站 区别怎么做简历的网站
  • idea做一个自己的网站教程建立网站三大基础
  • 网站建设佰金手指科杰十三河南网站建设推广
  • 前端用什么框架做网站最好看免费观看高清大全老师补课中国
  • 西安网站建设公司 云阔wordpress更换域名图片不显示
  • 做公司网站时的英文简介高端企业网站建设公司怎么做实用性
  • 网站建设哪个遵化网站开发
  • 南山网站建设哪家好济南网站建设济南
  • 在线直播教学网站是怎么做的上海市建设安全协会网站孟 侠
  • 织梦网站建设深圳展览展示公司排行
  • 自己做的网站怎么设置地址站长做什么网站赚钱
  • 用vue element-ui做的网站商城购物网站有哪些模块
  • 政务网站建设的三大核心功能是什么wordpress自定义搜索页面