在制作PowerPoint演示文稿时,幻灯片母版(Slide Master)可以帮助我们统一背景、布局、字体和颜色等视觉元素,从而提高演示文稿的专业度和效率。如果我们需要批量创建风格一致的演示文稿,使用Python自动设置母版将是一个高效、可复用的解决方案。
本文将详细介绍如何使用Python创建并应用PowerPoint幻灯片母版,并结合完整代码展示如何设置背景图片、布局样式、母版切换等核心操作。

本文使用的方法需要用到Free Spire.Presentation for Python,PyPI:pip install spire.presentation


步骤详解:用Python创建并应用幻灯片母版

以下是创建并应用幻灯片母版的完整流程,每一步都介绍了主要用到的类与方法,方便理解与扩展。

步骤1:创建演示文稿并设置幻灯片尺寸

  • 类:Presentation
  • 方法:.SlideSize.Type = SlideSizeType.Screen16x9
ppt = Presentation()
ppt.SlideSize.Type = SlideSizeType.Screen16x9  # 设置为宽屏格式

步骤2:添加多个幻灯片页面

  • 方法:.Slides.Append()
for i in range(4):
    ppt.Slides.Append()

步骤3:创建与获取幻灯片母版

  • 属性:.Masters
  • 方法:.AppendSlide(master)
first_master = ppt.Masters[0]  # 获取默认母版
ppt.Masters.AppendSlide(first_master)  # 添加第二个母版
second_master = ppt.Masters[1]

步骤4:设置幻灯片母版背景为图片

  • 类:RectangleF, ShapeType, FillFormatType
  • 方法:.AppendEmbedImageByPath(), .SlideBackground.Fill.FillType

使用公开图片链接作为背景(可替换为本地路径):

# 图片路径
pic1 = "1.jpg"
pic2 = "2.jpg"

# 设置背景区域尺寸
rect = RectangleF.FromLTRB(0, 0, ppt.SlideSize.Size.Width, ppt.SlideSize.Size.Height)

# 第一个母版背景
first_master.SlideBackground.Fill.FillType = FillFormatType.Picture
img1 = first_master.Shapes.AppendEmbedImageByPath(ShapeType.Rectangle, pic1, rect)
first_master.SlideBackground.Fill.PictureFill.Picture.EmbedImage = img1.PictureFill.Picture.EmbedImage

# 第二个母版背景
second_master.SlideBackground.Fill.FillType = FillFormatType.Picture
img2 = second_master.Shapes.AppendEmbedImageByPath(ShapeType.Rectangle, pic2, rect)
second_master.SlideBackground.Fill.PictureFill.Picture.EmbedImage = img2.PictureFill.Picture.EmbedImage

步骤5:将不同母版布局应用到幻灯片

  • 属性:.Layouts[index], .Slides[index].Layout
ppt.Slides[0].Layout = first_master.Layouts[1]  # 第1页使用第一个母版
for i in range(1, ppt.Slides.Count):  # 其他页使用第二个母版
    ppt.Slides[i].Layout = second_master.Layouts[8]

步骤6:保存并释放资源

  • 方法:.SaveToFile(), .Dispose()
ppt.SaveToFile("output/CustomMasterSlides.pptx", FileFormat.Pptx2013)
ppt.Dispose()

完整示例代码

以下是上述步骤整合后的完整示例,可直接运行测试:

from spire.presentation.common import *
from spire.presentation import *

ppt = Presentation()
ppt.SlideSize.Type = SlideSizeType.Screen16x9

for i in range(4):
    ppt.Slides.Append()

first_master = ppt.Masters[0]
ppt.Masters.AppendSlide(first_master)
second_master = ppt.Masters[1]

pic1 = "1.jpg"
pic2 = "2.jpg"

rect = RectangleF.FromLTRB(0, 0, ppt.SlideSize.Size.Width, ppt.SlideSize.Size.Height)

first_master.SlideBackground.Fill.FillType = FillFormatType.Picture
img1 = first_master.Shapes.AppendEmbedImageByPath(ShapeType.Rectangle, pic1, rect)
first_master.SlideBackground.Fill.PictureFill.Picture.EmbedImage = img1.PictureFill.Picture.EmbedImage

second_master.SlideBackground.Fill.FillType = FillFormatType.Picture
img2 = second_master.Shapes.AppendEmbedImageByPath(ShapeType.Rectangle, pic2, rect)
second_master.SlideBackground.Fill.PictureFill.Picture.EmbedImage = img2.PictureFill.Picture.EmbedImage

ppt.Slides[0].Layout = first_master.Layouts[1]
for i in range(1, ppt.Slides.Count):
    ppt.Slides[i].Layout = second_master.Layouts[8]

ppt.SaveToFile("output/CustomMasterSlides.pptx", FileFormat.Pptx2013)
ppt.Dispose()

结果文档
Python创建并应用PowerPoint幻灯片母版


总结

本文介绍了如何使用 Python 通过 Spire.Presentation 自动化设置PowerPoint幻灯片母版,包括如何添加多个母版、设置背景图片、并将其应用到不同幻灯片页面。

如需进一步扩展功能,例如添加页眉、页码、公司LOGO或母版占位符内容,请参考:Spire.Presentation 官方文档


大丸子
78 声望7 粉丝