目录
使用工具
Python 合并 PPT
合并多个PPT文档
合并每个PPT文档中的特定幻灯片
Python 拆分 PPT
按幻灯片数量拆分
按幻灯片范围拆分
按幻灯片内容拆分
按节 (Section) 拆分
在日常工作或学习中,我们经常需要对PPT文件进行调整,比如将多个PPT合并成一个,方便进行统一演示;或者将一个大型PPT拆分成多个小文件,便于团队协作或分类管理。对于经常需要合并或拆分PPT的人来说,使用代码自动执行此过程可以节省大量时间和精力。本博客将详细介绍如何使用 Python 自动化 PPT 合并和拆分的过程,包括以下内容:
- Python 合并 PPT
- 合并多个PPT文档
- 合并每个PPT文档中的特定幻灯片
- Python 拆分 PPT
- 按幻灯片数量拆分
- 按幻灯片范围拆分
- 按幻灯片内容拆分
- 按节 (Section) 拆分
使用工具
要在Python中实现PPT合并和拆分,可以使用 Spire.Presentation for Python库。该库主要用于在Python中创建、读取、修改和转换PowerPoint文件(包括.ppt和.pptx等格式)。
你可以通过以下命令安装此库:
pip install Spire.Presentation
Python 合并 PPT
合并PPT文件通常包括以下步骤:
- 打开每个待合并的PPT文档。
- 将这些PPT中的幻灯片复制到一个新的或指定的PPT中。
- 保存合并后的PPT文档。
下面将探讨两种常见的合并方法:合并多个PPT文档,以及合并每个PPT文档中的特定幻灯片。
合并多个PPT文档
在将多个 PPT 合并为一个文件时,通常需要按照每个文件中幻灯片的顺序进行排列。以下代码展示了如何创建一个新的 PPT,并依次从给定列表里的每个 PPT 文件中复制幻灯片到新PPT:
from spire.presentation import *# 合并多个 PPT 到一个新的 PPT
def merge_presentations(presentation_files, output_file):# 创建一个新的 PPTmerged_presentation = Presentation()# 移除默认空白幻灯片merged_presentation.Slides.RemoveAt(0)for file in presentation_files:# 加载待合并的 PPTpresentation = Presentation()presentation.LoadFromFile(file) for slide in presentation.Slides:# 将幻灯片依次复制到新 PPT 中merged_presentation.Slides.AppendBySlide(slide)# 保存合并后的 PPTmerged_presentation.SaveToFile(output_file, FileFormat.Pptx2016)# 要合并的 PPT 文件列表
files_to_merge = ["ppt1.pptx", "ppt2.pptx", "ppt3.pptx"]
# 调用合并方法
merge_presentations(files_to_merge, "合并PPT.pptx")
合并每个PPT文档中的特定幻灯片
如果你只想合并每个 PPT 中的特定幻灯片,可以通过指定幻灯片的索引(从0开始)来实现。以下代码允许你通过 slide_indices 参数选择要从每个 PPT 中提取的幻灯片:
from spire.presentation import *# 合并多个 PPT 中指定的幻灯片到一个新的 PPT
def merge_selected_slides(presentation_files, slide_indices, output_file):# 创建一个新的 PPTmerged_presentation = Presentation()# 移除默认空白幻灯片merged_presentation.Slides.RemoveAt(0)for i, file in enumerate(presentation_files):# 加载待合并的 PPTpresentation = Presentation()presentation.LoadFromFile(file) for j, slide in enumerate(presentation.Slides):if j in slide_indices[i]:# 将选定的幻灯片复制到新 PPT 中merged_presentation.Slides.AppendBySlide(slide)# 保存合并后的 PPTmerged_presentation.SaveToFile(output_file, FileFormat.Pptx2016)# 要合并的 PPT 文件列表
files_to_merge = ["ppt1.pptx", "ppt2.pptx"]
# 要合并的幻灯片索引
slide_indices = [[0, 2], [1]]
# 调用合并方法
merge_selected_slides(files_to_merge, slide_indices, "合并幻灯片.pptx")
Python 拆分 PPT
拆分 PPT 文件通常包括以下步骤:
- 加载原始 PPT。
- 选择要提取的幻灯片。
- 将这些幻灯片保存为一个新 PPT。
下面我们将探讨四种常见的拆分方法:按幻灯片数量拆分、按幻灯片范围拆分、按幻灯片内容拆分,以及按节(Section)拆分。
按幻灯片数量拆分
将一个 PPT 拆分为多个小文件,每个文件包含指定数量的幻灯片,是管理大型 PPT 的常见需求。下面的代码允许你指定每个文件包含的幻灯片数量,从而将一个大型PPT文件拆分为多个小型 PPT:
from spire.presentation import *
import os# 按指定的幻灯片数量拆分 PPT
def split_presentation_by_chunks(input_file, slides_per_file, output_directory):# 打开原始 PPTpresentation = Presentation()presentation.LoadFromFile(input_file)# 获取 PPT 中的总幻灯片数total_slides = presentation.Slides.Count# 确保输出目录存在if not os.path.exists(output_directory):os.makedirs(output_directory)# 按指定的块大小(slides_per_file)迭代幻灯片for start in range(0, total_slides, slides_per_file):# 为当前块创建一个新的 PPTsplit_presentation = Presentation()# 移除新 PPT 中的默认空白幻灯片split_presentation.Slides.RemoveAt(0)# 将当前块范围内的幻灯片添加到新 PPTfor i in range(start, min(start + slides_per_file, total_slides)):split_presentation.Slides.AppendBySlide(presentation.Slides[i])# 保存新 PPT 到指定目录,文件名根据当前块的索引生成output_file = os.path.join(output_directory, f"部分_{start // slides_per_file + 1}.pptx")split_presentation.SaveToFile(output_file, FileFormat.Pptx2016)# 调用方法,将 PPT 按每 3 张幻灯片拆分为多个文件,并保存到指定目录
split_presentation_by_chunks("ppt1.pptx", 3, "输出文件夹/")
按幻灯片范围拆分
如果你需要提取特定范围的幻灯片,可以通过指定起始和结束幻灯片索引(从 0 开始)来创建新 PPT 文件。以下代码允许你提取指定范围内的幻灯片:
from spire.presentation import *# 提取PPT中特定范围的幻灯片并保存为新文件
def split_presentation_by_range(input_file, start_slide, end_slide, output_file):# 打开原始PPTpresentation = Presentation()presentation.LoadFromFile(input_file)# 创建一个新PPTsplit_presentation = Presentation()# 移除新PPT中的默认空白幻灯片split_presentation.Slides.RemoveAt(0)# 将指定范围内的幻灯片添加到新PPTfor i in range(start_slide, end_slide + 1):split_presentation.Slides.AppendBySlide(presentation.Slides[i])# 保存新PPTsplit_presentation.SaveToFile(output_file, FileFormat.Pptx2016)# 调用方法,从PPT中提取第3 - 6张幻灯片并保存为新文件
split_presentation_by_range("ppt1.pptx", 2, 5, "按幻灯片范围拆分.pptx")
按幻灯片内容拆分
有时,你可能需要根据特定关键字或短语拆分 PPT。此方法可以提取包含特定内容的幻灯片,便于整理相关信息。以下代码会扫描每张幻灯片中的文本,如果找到指定关键字,则将该幻灯片添加到新 PPT 中:
from spire.presentation import *# 提取包含特定关键字的幻灯片到新PPT中
def split_by_content(input_file, keyword, output_file):# 打开原始PPTpresentation = Presentation()presentation.LoadFromFile(input_file)# 创建一个新的PPTsplit_presentation = Presentation()# 移除新PPT中的默认空白幻灯片split_presentation.Slides.RemoveAt(0)# 遍历原始PPT中的每张幻灯片for slide in presentation.Slides:# 检查幻灯片中的每个形状是否包含文本for shape in slide.Shapes:# 确保形状是AutoShape并具有文本框if isinstance(shape, IAutoShape) and shape.TextFrame is not None:# 检查文本中是否包含关键字if keyword in shape.TextFrame.Text:# 如果找到关键字,将幻灯片添加到新PPT中split_presentation.Slides.AppendBySlide(slide)break # 保存新PPTsplit_presentation.SaveToFile(output_file, FileFormat.Pptx2016)# 调用方法,将包含"科技"关键字的幻灯片提取到新PPT中
split_by_content("示例.pptx", "科技", "按幻灯片内容拆分.pptx")
按节 (Section) 拆分
在某些情况下,PPT 文档被分成多个节,每个节包含相关的幻灯片。按节拆分可以帮助我们将每个节中的幻灯片提取并保存为独立的 PPT 文件。以下代码展示了如何遍历每个节,并将其保存为单独的 PPT 文件:
from spire.presentation import *
import osdef split_presentation_by_section(input_file, output_directory):# 打开原始 PPTpresentation = Presentation()presentation.LoadFromFile(input_file)# 确保输出目录存在if not os.path.exists(output_directory):os.makedirs(output_directory)# 遍历所有节for i in range(presentation.SectionList.Count):# 获取当前节section = presentation.SectionList[i]# 创建新的 PPT new_presentation = Presentation()# 移除默认的空白幻灯片new_presentation.Slides.RemoveAt(0)# 添加节到新PPTnew_section = new_presentation.SectionList.Append(section.Name)# 获取当前节的幻灯片slides = section.GetSlides()# 将每个幻灯片插入到新的节中for slide_index, slide in enumerate(slides):new_section.Insert(slide_index, slide)# 保存新PPToutput_file = f"{output_directory}Section-{i + 1}.pptx"new_presentation.SaveToFile(output_file, FileFormat.Pptx2019) # 调用方法,按节拆分 PPT
split_presentation_by_section("节.pptx", "输出文件夹/")
以上就是使用 Python 实现 PPT 合并和拆分的全部内容,感谢阅读!