【办公类-21-11】 20240327三级育婴师 多个二级文件夹的docx合并成docx有页码,转PDF

本文主要是介绍【办公类-21-11】 20240327三级育婴师 多个二级文件夹的docx合并成docx有页码,转PDF,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景展示:有页码的操作题

背景需求:

实操课终于全部结束了,把考试内容(docx)都写好了

【办公类-21-10】三级育婴师 视频转文字docx(等线小五单倍行距),批量改成“宋体小四、1.5倍行距、蓝色字体、去掉五分钟”-CSDN博客文章浏览阅读787次,点赞9次,收藏7次。【办公类-21-10】三级育婴师 视频转文字docx(等线小五单倍行距),批量改成“宋体小四、1.5倍行距、蓝色字体、去掉五分钟”https://blog.csdn.net/reasonsummer/article/details/137055848

最后所有docx需要合并在一起,便于打印,但是前期发现合并的PDF内没有页码,双面打印后没有页码不知道到底是第几题。

【办公类-21-08】三级育婴师 多个二级文件夹的docx合并成PDF-CSDN博客文章浏览阅读510次,点赞7次,收藏6次。【办公类-21-08】三级育婴师 多个二级文件夹的docx合并成PDFhttps://blog.csdn.net/reasonsummer/article/details/136460044?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22136460044%22%2C%22source%22%3A%22reasonsummer%22%7D

需求:

1、将所有docx文件合并一个docx,

2、插入页码,并确保一个题目一页,

3、保存docx,转成PDF。

通过三天的AI问询,终于将这个需求实现了。

第1步:从二级文件里提取所有的蓝色字体docx,放到整理

代码

import os,time
import shutilprint('-----1、复制每个文件夹下的(没有5分钟字样的docx文件到二级文件夹“整理”里-------')# 一级文件夹路径
folder_path = r'D:\04三级操作题'
# 目标文件夹路径
new_path = folder_path+r'\整理'
os.makedirs(new_path, exist_ok=True)# 获取一级文件夹中的所有二级文件夹(包括整理文件夹)
subfolders = [f.path for f in os.scandir(folder_path) if f.is_dir()]# 遍历二级文件夹并复制docx文件到目标文件夹复制到整理里面
for subfolder in subfolders:if subfolders=='整理':        # 排除“整理”文件夹passelse:docx_files = [f for f in os.listdir(subfolder) if f.endswith('.docx')]for file in docx_files:source_file = os.path.join(subfolder, file)destination_file = os.path.join(new_path, file)if source_file == destination_file:# 如果复制文件相同,就跳过                continueif '5分钟' in file:#             # 不要有5分钟文件名的docxpasselse:shutil.copy2(source_file, destination_file)

第2步:修改整理内docx的上下左右边距,页脚的边距

并且每段最后加一个下一页换页符(确保每个题目占满一面)

代码

print('-----2、把“整理”里面的所有docx打开,最后添加分节符、设置页眉页脚距离边距的大小(把页面撑到最大)------')
# 打开每个文件,添加一个分节符
from docx import Document
from docx.enum.section import WD_SECTION_START
from docx.shared import Cm# 遍历整理文件夹内的所有docx文件
for filename in os.listdir(new_path):if filename.endswith(".docx"):file_path = os.path.join(new_path, filename)# 打开docx文件doc = Document(file_path)# 设置页脚距离页面边界1厘米section = doc.sections[0]section.left_margin = Cm(1)section.right_margin = Cm(1)section.top_margin = Cm(1)section.bottom_margin = Cm(1)# 将页脚距离页面边界从1.75厘米改为1厘米section.footer_distance = Cm(1)# 添加一个新分节符doc.add_section(WD_SECTION_START.NEW_PAGE)        # 保存文档(覆盖原文件)doc.save(file_path)

边距修改后,可以写文字的部分变大了

第3步:读取一个有页码的模板,把“整理”内所有的docx文字复制到模板,并另存

print('-----3、读取一个带页码的模板,把整理里面的docx合并到这个模板里------')from docx import Document
from docx.enum.section import WD_SECTION_START
import os
from docx.shared import Cm# # 创建一个带页码的空Document对象,并把页眉页脚边距改小combined_doc = Document(folder_path+r'\页码.docx')# 读取“整理”里面的docx的内容
docx_files = []for file_name in os.listdir(new_path):if file_name.endswith(".docx"):docx_files.append(os.path.join(new_path, file_name))for file in docx_files:doc = Document(file)for element in doc.element.body:combined_doc.element.body.append(element)    out_file=folder_path+r'\教育参考题1-13.docx'
combined_doc.save(out_file)

已经实现了每题1-2面(分页符)

但是还有第1行和最后1行(模板自带的,这些空行回车需要删除)

第4步,删除docx的第一个和最后一个回车

print('-----4、把“合并docx"的第一段回车和最后一个回车删除。(页码模板自带)---')
doc = Document(out_file)
# 删除第1个和最后一个段落(都只有一个回车)
for i in [0,-1]:dell_paragraph = doc.paragraphs[i]doc._element.body.remove(dell_paragraph._element)
doc.save(out_file)

第5步,docx转PDF

print('-----5、把“合并docx"转为”合并PDF“---')
# from docx2pdf import convert
# # 转换123.docx为123.pdf
# convert(out_file, out_file[:4]+'.pdf')
# 用这个导致有些内容到下一页了。import comtypes.client,time# 启动Word应用程序
word = comtypes.client.CreateObject('Word.Application')
doc = word.Documents.Open(out_file)# pdf_file=out_file[:-4]+'pdf'# 将文档保存为PDF文件
doc.SaveAs(out_file[:-4]+'pdf', FileFormat=17)  # 17表示PDF格式
# r'D:\04三级操作题\教育参考题1-13.pdf'
time.sleep(2)
# 关闭Word应用程序
doc.Close()
word.Quit()print("转换完成!")

现在docx合并和PDF合并都有页码了

1、docx:便于日后的修改(内容补充)

2、PDF:便于双面打印(内容板式不变化)

全部代码展示:

'''
合并word,带页码(读取一个带页码的空模板),转出PDF
作者:阿夏(AI对话大师)
时间:2024年3月27日
'''import os,time
import shutilprint('-----1、复制每个文件夹下的(没有5分钟字样的docx文件到二级文件夹“整理”里-------')# 一级文件夹路径
folder_path = r'D:\04三级操作题'
# 目标文件夹路径
new_path = folder_path+r'\整理'
os.makedirs(new_path, exist_ok=True)# 获取一级文件夹中的所有二级文件夹(包括整理文件夹)
subfolders = [f.path for f in os.scandir(folder_path) if f.is_dir()]# 遍历二级文件夹并复制docx文件到目标文件夹复制到整理里面
for subfolder in subfolders:if subfolders=='整理':        # 排除“整理”文件夹passelse:docx_files = [f for f in os.listdir(subfolder) if f.endswith('.docx')]for file in docx_files:source_file = os.path.join(subfolder, file)destination_file = os.path.join(new_path, file)if source_file == destination_file:# 如果复制文件相同,就跳过                continueif '5分钟' in file:#             # 不要有5分钟文件名的docxpasselse:shutil.copy2(source_file, destination_file)print('-----2、把“整理”里面的所有docx打开,最后添加分节符、设置页眉页脚距离边距的大小(把页面撑到最大)------')
# 打开每个文件,添加一个分节符
from docx import Document
from docx.enum.section import WD_SECTION_START
from docx.shared import Cm# 遍历整理文件夹内的所有docx文件
for filename in os.listdir(new_path):if filename.endswith(".docx"):file_path = os.path.join(new_path, filename)# 打开docx文件doc = Document(file_path)# 设置页脚距离页面边界1厘米section = doc.sections[0]section.left_margin = Cm(1)section.right_margin = Cm(1)section.top_margin = Cm(1)section.bottom_margin = Cm(1)# 将页脚距离页面边界从1.75厘米改为1厘米section.footer_distance = Cm(1)# 添加一个新分节符doc.add_section(WD_SECTION_START.NEW_PAGE)        # 保存文档(覆盖原文件)doc.save(file_path)print('-----3、读取一个带页码的模板,把整理里面的docx合并到这个模板里------')from docx import Document
from docx.enum.section import WD_SECTION_START
import os
from docx.shared import Cm# # 创建一个带页码的空Document对象,并把页眉页脚边距改小combined_doc = Document(folder_path+r'\页码.docx')# 读取“整理”里面的docx的内容
docx_files = []for file_name in os.listdir(new_path):if file_name.endswith(".docx"):docx_files.append(os.path.join(new_path, file_name))for file in docx_files:doc = Document(file)for element in doc.element.body:combined_doc.element.body.append(element)    out_file=folder_path+r'\教育参考题1-13.docx'
combined_doc.save(out_file)print('-----4、把“合并docx"的第一段回车和最后一个回车删除。(页码模板自带)---')
doc = Document(out_file)
# 删除第1个和最后一个段落(都只有一个回车)
for i in [0,-1]:dell_paragraph = doc.paragraphs[i]doc._element.body.remove(dell_paragraph._element)
doc.save(out_file)print('-----5、把“合并docx"转为”合并PDF“---')
# from docx2pdf import convert
# # 转换123.docx为123.pdf
# convert(out_file, out_file[:4]+'.pdf')
# 用这个导致有些内容到下一页了。import comtypes.client,time# 启动Word应用程序
word = comtypes.client.CreateObject('Word.Application')
doc = word.Documents.Open(out_file)# pdf_file=out_file[:-4]+'pdf'# 将文档保存为PDF文件
doc.SaveAs(out_file[:-4]+'pdf', FileFormat=17)  # 17表示PDF格式
# r'D:\04三级操作题\教育参考题1-13.pdf'
time.sleep(2)
# 关闭Word应用程序
doc.Close()
word.Quit()print("转换完成!")

这篇关于【办公类-21-11】 20240327三级育婴师 多个二级文件夹的docx合并成docx有页码,转PDF的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/854726

相关文章

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

Python实现PDF与多种图片格式之间互转(PNG, JPG, BMP, EMF, SVG)

《Python实现PDF与多种图片格式之间互转(PNG,JPG,BMP,EMF,SVG)》PDF和图片是我们日常生活和工作中常用的文件格式,有时候,我们可能需要将PDF和图片进行格式互转来满足... 目录一、介绍二、安装python库三、Python实现多种图片格式转PDF1、单张图片转换为PDF2、多张图

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

java导出pdf文件的详细实现方法

《java导出pdf文件的详细实现方法》:本文主要介绍java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下... 目录使用注意点包含内容1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接使

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Apache POI在Java中实现Excel单元格的合并

《使用ApachePOI在Java中实现Excel单元格的合并》在日常工作中,Excel是一个不可或缺的工具,尤其是在处理大量数据时,本文将介绍如何使用ApachePOI库在Java中实现Excel... 目录工具类介绍工具类代码调用示例依赖配置总结在日常工作中,Excel 是一个不可或缺的工http://