如何用Python批量修改PPTX文件的文字样式与幻灯片背景色?
用Python批量修改PPT的字体、文字颜色及背景色
核心实现思路
遍历指定文件夹下的所有PPT文件,对每个文件的每张幻灯片执行以下操作:
- 统一修改幻灯片背景色
- 遍历所有含文本的形状(占位符、文本框等),批量修改文字的字体和颜色
完整代码示例
from pptx import Presentation from pptx.util import Pt from pptx.dml.color import RGBColor import os # 自定义配置参数 TARGET_FOLDER = "你的PPT文件夹路径" # 替换为实际存放PPT的文件夹 OUTPUT_FOLDER = "修改后的PPT" # 输出文件夹,不存在则自动创建 TARGET_FONT = "微软雅黑" # 替换为你需要的字体 TEXT_RGB = RGBColor(0, 51, 102) # 文字颜色(深蓝色),可自行调整RGB值 BG_RGB = RGBColor(245, 245, 245) # 幻灯片背景色(浅灰色) # 创建输出目录 os.makedirs(OUTPUT_FOLDER, exist_ok=True) def process_single_ppt(ppt_file_path): prs = Presentation(ppt_file_path) # 1. 处理所有幻灯片的背景色 for slide in prs.slides: # 设置纯色背景填充 slide.background.fill.solid() slide.background.fill.fore_color.rgb = BG_RGB # 2. 处理幻灯片内所有文字的字体和颜色 for shape in slide.shapes: if not shape.has_text_frame: continue # 遍历文本框内的所有段落和文字块 for paragraph in shape.text_frame.paragraphs: for run in paragraph.runs: # 设置字体(针对中文字体需额外指定eastAsia属性) run.font.name = TARGET_FONT run.font._element.rPr.rFonts.set('w:eastAsia', TARGET_FONT) # 设置文字颜色 run.font.color.rgb = TEXT_RGB # 保存修改后的PPT到输出文件夹 output_file = os.path.join(OUTPUT_FOLDER, os.path.basename(ppt_file_path)) prs.save(output_file) print(f"处理完成:{os.path.basename(ppt_file_path)}") # 遍历目标文件夹,批量处理所有PPT文件 for file_name in os.listdir(TARGET_FOLDER): if file_name.lower().endswith((".pptx", ".ppt")): full_path = os.path.join(TARGET_FOLDER, file_name) process_single_ppt(full_path) print("所有PPT批量处理完成!")
关键细节说明
- 中文字体适配:由于python-pptx对东亚字体的特殊处理逻辑,需额外设置
eastAsia属性,避免字体不生效的问题。 - 颜色自定义:
RGBColor的三个参数对应红、绿、蓝通道,取值范围为0-255,可根据需求调整为任意颜色。 - 安全处理:修改后的PPT会保存到指定输出文件夹,不会覆盖原文件,避免数据丢失。
- 覆盖场景:代码会处理幻灯片内所有含文本的形状,包括预设占位符、手动添加的文本框、表格内文字等。
注意事项
- 确保目标字体已在你的系统中安装,否则PPT会自动替换为系统默认字体。
- 加密或损坏的PPT文件无法被python-pptx解析,需提前筛选排除。
- 旧版
.ppt文件兼容性略差,建议先转为.pptx格式后再处理。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

