【办公类-22-16】周计划系列(5-8)“周计划-08 网页上传周计划png(docx转PDF转png)“ (2024年调整版本)

作品展示——将docx 转PDF转png,保留第一张图片

背景需求:

把周计划内容初步替换后,获得了19周的周计划+教案的docx

需要把周计划第一页的反思内容删除,,然后把第一页横版截图上传班级主页。

需求:周计划docx  截图成png图片,上传

素材准备:

代码展示:

-1、把所有周计划docx打开,删掉反思内容,另存到jpg上传文件夹

import os
from docx import Document
from docx.shared import Pt
from pdf2image import convert_from_path
import shutil

path=r'D:\test\02办公类\91周计划4份_2024年中4班\04 周计划'
old=path+r'\04合成新周计划'
new=path+r'\05jpg上传'
# 处理.docx文件

from docx import Document
import os

print('--------1、遍历文件夹,把所有周计划docx打开,删掉反思内容,另存到jpg上传文件夹---------')
folder_path = old
for file_name in os.listdir(folder_path):
    print(file_name)
    if file_name.endswith('.docx'):
        file_path = os.path.join(folder_path, file_name)
        doc = Document(file_path)
        table = doc.tables[0]  # 假设第一页只有一个表格
        cell = table.cell(1, 8)  # 获取第1行第8列的单元格
        cell.text = ''  # 清空单元格内容
        doc.save(new+r'\{}'.format(file_name))

2、打开删除过内容的docx文件并转换成pdf文件(存在“05jpg上传”里)

print('--------2、打开docx文件并转换成pdf文件---------')
from docx import Document
from docx2pdf import convert
import os,time

folder_path = new
for file_name in os.listdir(folder_path):
    if file_name.endswith('.docx'):
        file_path = os.path.join(folder_path, file_name)
        pdf_path = file_path.replace('.docx', '.pdf')        
        # 打开docx文件并转换成pdf文件
        convert(file_path, pdf_path)
        time.sleep(1)

转成pdf的时间比较长

3、把每个PDF的每页保存为png图片(一个PDF可能有4-6份)

'--------3、把PDF保存为png图片---------')
import fitz  # PyMuPDF
from PIL import Image

# 遍历123文件夹下的所有.pdf文件
folder_path = new
for file_name in os.listdir(folder_path):
    if file_name.endswith('.pdf'):
        file_path = os.path.join(folder_path, file_name)

        # 打开PDF文件
        pdf_document = fitz.open(file_path)

        # 逐页将PDF文件转换为PNG图片
        for page_num in range(pdf_document.page_count):
            page = pdf_document[page_num]
            image_list = page.get_pixmap()

            # 保存为PNG图片
            image = Image.frombytes("RGB", [image_list.width, image_list.height], image_list.samples)
            image.save(f"{os.path.splitext(file_path)[0]}{page_num+1}.png")

        pdf_document.close()

实际上我只需要每个png图片的第一张,也就是以“1.png”结尾的图片

4、删除“05jpg”文件夹下的所有.docx、.pdf和.png文件,如果png文件名称最后是1. png需要保留。

print('------4、删除123文件夹下的所有.docx、.pdf和.png文件,如果png文件名称最后是1. png需要保留。---------')
import os


folder_path = new
files_to_keep = set()  # 用于存储需要保留的文件名

# 遍历123文件夹下的所有文件
for file_name in os.listdir(folder_path):
    file_path = os.path.join(folder_path, file_name)
    
    if file_name.endswith('.png') and not file_name.endswith('1.png'):
        os.remove(file_path)  # 删除不符合条件的.png文件
    elif file_name.endswith('.png'):
        files_to_keep.add(file_path)  # 将符合条件的文件路径加入到files_to_keep中
    elif file_name.endswith('.docx') or file_name.endswith('.pdf'):
        os.remove(file_path)  # 删除.docx和.pdf文件

运行后瞬间删除了pdf、docx 、和png,只有最后5个字符是“1.png”的文件被保留下来

通过缩略图,可以看到每张图片正好一页,没有缺少内容,反思部分也留出空格。(如果这里出现框架到下一页,少了一部分,可以继续回到前面几步,修改好第一页的框架结构,然后再次用转图代码进行反复制作,直到让图片数量与周次相同)

上传图片完成了,等待UIBOT上传

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值