python替换word文件中的图片

python替换word文件中的图片

模拟鼠标键盘,截屏

python 复制代码
import glob
import os
import time

import pyautogui
import pyautogui as p
from PIL import ImageGrab
from pynput.keyboard import Controller

# -*- coding:utf-8 -*-


directory = './'

directory1 = './output'

for f in glob.glob(os.path.join(directory, '*.docx')):
    os.remove(f)

for f in glob.glob(os.path.join(directory1, '*.png')):
    os.remove(f)


def find_and_click(image_path, confidence):
    image_location = pyautogui.locateOnScreen(image_path, grayscale=True, confidence=confidence)
    if image_location:
        time.sleep(0.5)
        position = pyautogui.center(image_location)
        pyautogui.click(position)
    else:
        print(f"{image_path} 未找到指定的图片")


time.sleep(1)

# 初始化键盘控制器i
keyboard = Controller()

find_and_click("./images/01hf.jpg", 0.8)
time.sleep(1)

find_and_click("./images/02my.jpg", 0.8)
time.sleep(1)

find_and_click("./images/03bg.jpg", 0.8)
time.sleep(1)

find_and_click("./images/04cty.jpg", 0.8)
time.sleep(1)

find_and_click("./images/05zsxx.jpg", 0.8)
time.sleep(3)

find_and_click("./images/06sj.jpg", 0.8)
time.sleep(2)

find_and_click("./images/07ss.jpg", 0.8)
time.sleep(2)

keyboard = Controller()

keyboard.press(key='p')  # 按键按下s
time.sleep(0.2)
keyboard.release(key='p')  # 按键松开s
time.sleep(1)

find_and_click("./images/08sj.jpg", 0.8)
time.sleep(1)

p.doubleClick(1169, 145, 0.5)

time.sleep(5)

# 定义截图区域的左上角和右下角坐标
# 这里的坐标应根据你的需求进行调整
left, top, right, bottom = 992, 217, 1899, 391

# 使用ImageGrab.grab()方法进行截图
# 参数为截图区域的左上角和右下角坐标
screenshot = ImageGrab.grab(bbox=(left, top, right, bottom))

# 保存截图图片
screenshot.save('./output/0test.png')

time.sleep(0.5)
find_and_click("./images/14ht.jpg", 0.8)
time.sleep(3)

python替换word文件中的图片

python 复制代码
import glob
import os
import shutil
from docx import Document

# -*- coding:utf-8 -*-

# 删除目录下所有的*.docx文件
directory = './'

for f in glob.glob(os.path.join(directory, '*.docx')):
    os.remove(f)

# 将源文件拷贝到目标目录
source_file = 'D:\\周报整理\\2024年周报\\2024年4月运维服务报告v06.docx'
target_directory = './'
shutil.copy(source_file, target_directory)

# 获取目录下所有文件
folder_path = r'./'

file_list = os.listdir(folder_path)

# 遍历文件列表,修改xxx.docx改名为test.docx
for file_name in file_list:
    # 检查文件是否以 .xls 结尾
    if file_name.endswith('.docx'):
        # 构造新文件名
        new_file_name = os.path.join(folder_path, 'test.docx')
        # 重命名文件
        os.rename(os.path.join(folder_path, file_name), new_file_name)


def get_image_info(doc):
    for rel in doc.part.rels.values():
        if rel.reltype == 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image':
            print('Image ID:', rel.rId, 'Filename:', rel.target_part.filename)


def replace_image_by_id(doc, rId, new_image_path):
    for rel in doc.part.rels.values():
        if rel.reltype == 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image' and rel.rId == rId:
            target_part = rel.target_part
            with open(new_image_path, 'rb') as f:
                target_part._blob = f.read()


document = Document('test.docx')

# 获取图片信息
get_image_info(document)

# 替换图片
replace_image_by_id(document, 'rId11', './output/0test.png')


# 保存文档
document.save('output_test.docx')
相关推荐
泡海椒12 分钟前
JQuick-Excel dateFormat 转换实战:日期值与 FORMAT 显示格式的边界
开发语言·python·excel
念越16 分钟前
接口自动化测试从入门到实战:接口用例设计、Requests、Pytest、YAML、JSON Schema 与 Allure 报告
python·测试工具·自动化·json·pytest
言乐620 分钟前
Python贪心算法实现搜索推荐
python·django·virtualenv·pygame·tornado
benchmark_cc25 分钟前
A股量化尾盘筛选对数据时效敏感:行情链路变慢时先排查哪里?
python·数据分析·pandas·量化交易·股票数据·quantdash
白杨尚青26 分钟前
C++入门篇(十三):vector(上)——动态数组:构造、空间增长与迭代器失效
开发语言·c++·笔记·算法·stl
江江爱编程32 分钟前
java零基础保姆级教学01
java·开发语言
vx_Biye_Design36 分钟前
expressDeepSeek社团咨询助手的学生社团管理系统60746-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·课程设计·express
泡茶喝茶写代码1 小时前
A股量化数据工程:从 REST 接口到策略信号(第 5 篇):板块成分股映射与对齐
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据接口
沐晓时光1 小时前
C语言入门,深入理解指针(2)
c语言·开发语言
vx_Biye_Design1 小时前
django就业信息推荐系统61953-计算机课程设计、毕业设计
java·vue.js·spring boot·python·架构·django·课程设计