给 PowerPoint 添加动画能够增强演示的视觉吸引力,突出重点信息,并帮助观众更好地理解复杂概念。动画效果可以引导观众的注意力,使演示内容更加生动和动态,提升整个演示文稿的专业性和记忆点。在本文中,我们将演示如何使用 Spire.Presentation for Python 在 Python 中给 PowerPoint 文档里的形状添加动画,以及获取动画效果信息。
安装 Spire.Presentation for Python
本教程需要用到 Spire.Presentation for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Presentation
如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.Presentation for Python
给 PowerPoint 文档中形状和形状中文字添加动画
Spire.Presentation for Python 提供了 IShape.Slide.Timeline.MainSequence.AddEffect(IShape,AnimationEffectType) 方法用于来给指定形状添加特定的动画效果;提供了 AnimationEffect.SetStartEndParagraph (int startParaIndex, int endParaIndex) 来将指定的动画效果设置给形状中指定段落。
具体步骤如下:
- 创建 Presentation 类的对象。
- 使用 Presentation.LoadFromFile() 方法加载一个 PowerPoint 演示文稿。
- 通过 Presentation.Slides[index] 属性获取特定幻灯片(根据索引)。
- 通过 ISlide.Shapes.AppendShape(ShapeType shapeType, RectangleF rectangle) 给当前幻灯片添加一个矩形,并设置矩形的大小与位置。
- 通过 IShape.Fill.FileType 来设置矩形填充类型。
- 通过 IShape.Fill.SolidColor.Color 来设置矩形填充颜色。
- 通过 IShape.ShapeStyle.LineColor.Color 来设置矩形边框线颜色。
- 通过 IShape.AppendTextFrame() 来给矩形添加段落。
- 通过 IShape.Slide.Timeline.MainSequence.AddEffect(IShape,AnimationEffectType) 给矩形添加淡出旋转动画效果以及浮动动画效果。
- 通过 AnimationEffect.SetStartEndParagraph(int startParaIndex, int endParaIndex) 给矩形中指定段落设置浮动动画效果。
- 使用 Presentation.SaveToFile() 方法保存结果演示文稿。
- Python
from spire.presentation.common import *
from spire.presentation import *
# 定义输出文件路径和名称
outputFile = "output.pptx"
# 创建一个新的演示文稿对象
ppt = Presentation()
# 获取演示文稿中的第一个幻灯片
slide = ppt.Slides[0]
# 在幻灯片上添加一个矩形形状,并设置其位置和大小
shape = slide.Shapes.AppendShape(ShapeType.Rectangle, RectangleF.FromLTRB(100, 150, 300, 230))
# 设置形状的填充类型为纯色填充
shape.Fill.FillType = FillFormatType.Solid
# 设置形状的填充颜色为浅蓝色
shape.Fill.SolidColor.Color = Color.get_LightBlue()
# 设置形状的线条颜色为白色
shape.ShapeStyle.LineColor.Color = Color.get_White()
# 在形状中添加文本框,并设置文本内容
shape.AppendTextFrame("动画形状")
# 为形状添加淡出旋转动画效果
shape.Slide.Timeline.MainSequence.AddEffect(shape, AnimationEffectType.FadedSwivel)
# 为文本形状添加浮动动画效果
animation = shape.Slide.Timeline.MainSequence.AddEffect(shape, AnimationEffectType.Float)
# 设置动画的起始段落和结束段落(这里设置为同一个段落)
animation.SetStartEndParagraphs(0, 0)
# 保存演示文稿到指定的文件路径,并使用Pptx2013格式
ppt.SaveToFile(outputFile, FileFormat.Pptx2013)
# 释放演示文稿资源
ppt.Dispose()
给 PowerPoint 文档中形状添加退出动画
在 PowerPoint 中,动画效果可分为四大类:进入、强调、退出和动作路径,其中,进入和退出包含一些共有的动画效果。当使用 Spire.Presentation 给形状添加共有动画效果时,这些效果默认将被应用为进入效果,接下来将介绍如何给形状应用退出动画效果。
具体步骤如下:
- 创建 Presentation 类的对象。
- 使用 Presentation.LoadFromFile() 方法加载一个 PowerPoint 演示文稿。
- 通过 Presentation.Slides[index] 属性获取特定幻灯片(根据索引)。
- 通过 ISlide.Shapes.AppendShape(ShapeType shapeType, RectangleF rectangle) 给当前幻灯片添加一个立方体,并设置矩形的大小与位置。
- 通过 IShape.Fill.FileType 来设置立方体的填充类型。
- 通过 IShape.Fill.SolidColor.Color 来设置立方体填充颜色。
- 通过 IShape.ShapeStyle.LineColor.Color 来设置立方体边框线颜色。
- 通过 IShape.AppendTextFrame() 来给立方体添加段落。
- 通过 IShape.Slide.Timeline.MainSequence.AddEffect(IShape,AnimationEffectType) 给立方体添加随机条形动画效果。
- 通过 AnimationEffect.PresetClassType 来将动画类型设置为“退出动画”。
- 使用 Presentation.SaveToFile() 方法保存结果演示文稿。
- Python
from spire.presentation.common import *
from spire.presentation import *
# 定义输出文件路径和名称,用于保存PPT文件
outputFile = "output.pptx"
# 创建一个新的PowerPoint演示文稿对象
ppt = Presentation()
# 获取演示文稿中的第一个幻灯片
slide = ppt.Slides[0]
# 在幻灯片上添加一个立方体形状,并设置其位置和大小
shape = slide.Shapes.AppendShape(ShapeType.Cube, RectangleF.FromLTRB(100, 150, 300, 230))
# 设置形状的填充类型为纯色填充
shape.Fill.FillType = FillFormatType.Solid
# 设置形状的填充颜色为浅蓝色
shape.Fill.SolidColor.Color = Color.get_LightBlue()
# 设置形状的线条颜色为白色
shape.ShapeStyle.LineColor.Color = Color.get_White()
# 在形状中添加文本框,并设置文本内容为“退出动画”
shape.AppendTextFrame("退出动画")
# 为形状添加退出动画效果(随机条形动画)
effect = shape.Slide.Timeline.MainSequence.AddEffect(shape, AnimationEffectType.RandomBars)
# 设置动画效果的类型为退出动画
effect.PresetClassType = TimeNodePresetClassType.Exit
# 将演示文稿保存到指定的文件中,使用PPTX 2013格式
ppt.SaveToFile(outputFile, FileFormat.Pptx2013)
# 释放演示文稿对象的资源
ppt.Dispose()
获取 PowerPoint 中动画相关信息
实现该功能需要遍历所有幻灯片,再遍历每张幻灯片中的动画效果,接着通过 AnimationEffect 对象下相关方法来获取动画效果相关信息。
具体步骤如下:
- 创建 Presentation 类的对象。
- 使用 Presentation.LoadFromFile() 方法加载一个 PowerPoint 演示文稿。
- 遍历 PowerPoint 文档的每张幻灯片,以及遍历每张幻灯片中每个动画。
- 通过 AnimationEffect.ShapeTarget.Name 获取动画效果所作用的形状的名称。
- 通过 ISlide.SlideNumber 来获取当前幻灯片的编号。
- 通过 AnimationEffect.AnimationEffectType 来获取动画效果类型。
- 通过 AnimationEffect.Timeing.Duration 来获取动画效果持续时长。
- 通过 AnimationEffect.Timeing.RepeatCount 来获取动画效果重复次数。
- 通过 AnimationEffect.IterateType 来获取动画文本效果。
- 将前面获取到的信息保存到本地 TXT 文件中。
- 通过 IShape.AppendTextFrame() 来给立方体添加段落。
- Python
from spire.presentation.common import *
from spire.presentation import *
# 输入文件路径,指向一个PPTX格式的动画演示文稿
inputFile = "input.pptx"
# 输出文件路径,用于存储提取的动画效果信息
outputFile = "output.txt"
# 创建一个Presentation对象,用于处理PowerPoint文件
presentation = Presentation()
# 从指定路径加载PPTX文件到Presentation对象中
presentation.LoadFromFile(inputFile)
# 创建一个空列表,用于存储提取的动画效果信息
sb = []
# 遍历演示文稿中的每一张幻灯片
for slide in presentation.Slides:
# 遍历幻灯片中的每一个动画效果
for effect in slide.Timeline.MainSequence:
# 获取动画效果所作用的形状的名称
shapeName = effect.ShapeTarget.Name
sb.append("形状名称: " + shapeName)
# 获取当前幻灯片的编号
slideNumber = slide.SlideNumber
sb.append("当前幻灯片编号: " + str(slideNumber))
# 获取动画效果的类型
animationEffectType = effect.AnimationEffectType
sb.append("动画效果类型: " + str(animationEffectType))
# 获取动画持续时间
duration = effect.Timing.Duration
sb.append("动画效果持续时长: " + str(duration))
# 获取动画重复次数
count = effect.Timing.RepeatCount
sb.append("动画效果重复次数: " + str(count))
# 获取动画文本效果
IterateType = effect.IterateType
sb.append("动画文本效果: " + str(IterateType))
sb.append("\n")
# 打开输出文件,准备写入动画效果信息
fp = open(outputFile, "w")
# 遍历列表,将每个动画效果信息写入文件
for s in sb:
fp.write(s + "\n")
# 关闭Presentation对象,释放资源
presentation.Dispose()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。