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

wrod生成pdf。[特殊字符]改背景

import subprocess
import os,time
from rembg import remove, new_session
from PIL import Image
import io
from docxtpl import DocxTemplate, InlineImage
from docx.shared import Inches

input_folder = ‘tupian’ # 输入文件夹
kouchu_folder = ‘kouchu’ # 去背景图像保存文件夹
output_folder = ‘dangan’ # 合成后的输出文件夹
background_folder = ‘beijing’ # 背景文件夹
model_path = “mode/u2net.onnx” # 模型路径
wendang_path = “wendang” # 模型路径
pdf_path = “pdf” # 模型路径
doc = DocxTemplate(“moban.docx”)
context = {
‘company_name’: “World company”,
}

如果输出文件夹不存在,则创建它

if not os.path.exists(output_folder):
os.makedirs(output_folder)

获取背景文件夹中的所有背景图片

background_images = [f for f in os.listdir(background_folder) if f.lower().endswith((‘.png’, ‘.jpg’, ‘.jpeg’))]

Function to convert docx to PDF

def convert_to_pdf(docx_path, pdf_output_path):
subprocess.run([“/Applications/LibreOffice.app/Contents/MacOS/soffice”, “–headless”, “–convert-to”, “pdf”, docx_path, “–outdir”, pdf_output_path])

遍历输入文件夹中的所有图片文件

for filename in os.listdir(input_folder):
input_path = os.path.join(input_folder, filename)

# 确保文件是图片文件(你可以根据需要调整此条件)
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):output_path = os.path.join(kouchu_folder, filename)# 读取输入图片并去背景with open(input_path, 'rb') as input_file:input_data = input_file.read()session = new_session(model_name='u2net_custom', model_path=model_path)output_data = remove(input_data, session=session)# 将去除背景后的数据转为图片input_image = Image.open(io.BytesIO(output_data))with open(output_path, 'wb') as output_file:output_file.write(output_data)# 遍历背景文件夹中的所有背景图像for bg_filename in background_images:background_path = os.path.join(background_folder, bg_filename)background_image = Image.open(background_path)# 调整背景大小,使其与输入图像大小匹配background_image = background_image.resize(input_image.size)# 合成图像:将去背景后的图片合成到背景上background_image = background_image.convert("RGBA")input_image = input_image.convert("RGBA")# 合成图像(将前景图像叠加到背景上)combined_image = Image.alpha_composite(background_image, input_image)# 将合成后的图像转换为RGB模式并保存combined_image = combined_image.convert("RGB")# 创建输出路径,根据背景文件名生成不同的输出文件名output_filename = f"{os.path.splitext(filename)[0]}_{os.path.splitext(bg_filename)[0]}.jpg"output_path = os.path.join(output_folder, output_filename)# 保存合成后的图片combined_image.save(output_path)print(f"处理并保存了 {filename} 与 {bg_filename} 合成的图片 到 {output_path}")context['company_logo'] = InlineImage(doc, output_path, width=Inches(2))  # 插入图片并设置宽度print(context)# 渲染模板doc.render(context)# 保存生成的文档doc_output_path = os.path.join(wendang_path, f"generated_doc_{os.path.splitext(filename)[0]}_{os.path.splitext(bg_filename)[0]}.docx")doc.save(doc_output_path)# 延迟2秒time.sleep(2)pdf_output_path = os.path.join(pdf_path,f"generated_doc_{os.path.splitext(filename)[0]}_{os.path.splitext(bg_filename)[0]}.pdf")convert_to_pdf(doc_output_path, pdf_output_path)
http://www.dtcms.com/a/174219.html

相关文章:

  • 【25软考网工】第五章(6)TCP和UDP协议、流量控制和拥塞控制、重点协议与端口
  • 嵌入式开发学习日志Day14
  • Elasticsearch:我们如何在全球范围内实现支付基础设施的现代化?
  • 【BUG】‘DetDataSample‘ object has no attribute ‘_gt_sem_seg‘
  • BRAFAR: Bidirectional Refactoring, Alignment, Fault Localization, and Repair...
  • Listremove数据时报错:Caused by: java.lang.UnsupportedOperationException
  • Win11/Win10无法保存ip设置提示请检查一个或多个设置并重试怎么办?
  • [人机交互]协作与通信的设计
  • 二叉树—中序遍历—非递归
  • centos的根目录占了大量空间怎么办
  • 大语言模型(LLM)领域,有几项显著的进展和技术突破
  • 如何用Java读取PDF
  • 自然语言处理之情感分析:ALBERT在社交媒体的应用技术教程
  • 家庭宽带IP与IDC机房IP
  • ϵ-prediction和z0-prediction是什么意思
  • Day17 聚类算法(K-Means、DBSCAN、层次聚类)
  • HarmonyOS 5.0 低时延音视频开发​​
  • 【硬核数学】0. 序章:万丈高楼平地起,AI数学筑基之旅《从零构建机器学习、深度学习到LLM的数学认知》
  • 数字图像相关法在薄板变形测量中的实践
  • Apache Velocity代码生成简要介绍
  • 单例模式都有哪些?有什么区别?
  • 求组合数【递推+快速幂+卢卡斯+线性筛】
  • 单例模式的实现方法
  • Android数据库全栈开发实战:Room+SQLCipher+Hilt企业级应用构建
  • 解决Centos连不上网
  • 自定义一个 Spring Boot Starter -笔记
  • 广州华锐视点邀您参与2025广交会VRAR展【5月10-12日】
  • 大数据产品销售数据分析:基于Python机器学习产品销售数据爬虫可视化分析预测系统设计与实现
  • 20250506格式化NanoPi NEO开发板使用Ubuntu core16.04系统的TF启动卡
  • Spark 的 Shuffle 机制:原理与源码详解