PowerPoint 演示文稿中经常包含超链接,用于引导到更多资源或在演示文稿内部进行导航。虽然这些链接可以为资源访问和导航带来便利,但有时也可能会影响演示的流畅进行,或显得演示文稿不那么专业。对于幻灯片中无效或不必要的链接,我们可以通过 Python 代码轻松删除,提升演示文稿的整体质量。本文将介绍如何使用 Spire.Presentation for 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 演示文稿中的普通文本存放在各种自动形状中。开发人员可以通过使用 IAutoShape.TextFrame.Paragraphs[].TextRanges[] 属性访问这些形状中的文本范围,并通过 TextRange.ClickAction 属性读取或设置其上的超链接。将 TextRange.ClickAction 属性设置为 None 即可删除这些超链接。
详细步骤如下:
- 创建一个 Presentation 类的实例,并使用 Presentation.LoadFromFile() 方法载入一个 PowerPoint 演示文稿。
- 遍历演示文稿中的幻灯片,然后遍历幻灯片中的形状。
- 检查形状是否是 IAutoShape 的实例。如果是,则遍历该形状中的段落,然后遍历段落中的文本范围。
- 检查文本范围的 TextRange.ClickAction 属性是否为 None。如果不是,将 TextRange.ClickAction 属性设置为 None 以移除超链接。
- 使用 Presentation.SaveToFile() 方法保存演示文稿。
- Python
from spire.presentation import Presentation, IAutoShape, FileFormat
# 创建一个 Presentation 类的实例
presentation = Presentation()
# 加载一个 PowerPoint 演示文稿
presentation.LoadFromFile("示例.pptx")
# 遍历演示文稿中的幻灯片
for slide in presentation.Slides:
# 遍历幻灯片中的形状
for shape in slide.Shapes:
# 判断形状是否为 AutoShape 实例
if isinstance(shape, IAutoShape):
# 遍历形状中的段落
for paragraph in shape.TextFrame.Paragraphs:
# 遍历段落中的文本范围
for textRange in paragraph.TextRanges:
# 判断文本范围是否有超链接
if textRange.ClickAction is not None:
# 移除超链接
textRange.ClickAction = None
# 保存演示文稿
presentation.SaveToFile("output/移除演示文稿文本超链接.pptx", FileFormat.Pptx2013)
presentation.Dispose()
移除演示文稿中所有形状上的超链接
IShape 类代表了演示文稿幻灯片中的所有形状类型,如自动形状、图片、表格等。可以通过将 IShape.Click.get_NoAction() 方法返回的值设置为形状的 IShape.Click 属性值来移除所有这些形状上的超链接。详细步骤如下:
- 创建一个 Presentation 类的实例,并使用 Presentation.LoadFromFile() 方法加载一个 PowerPoint 演示文稿。
- 遍历演示文稿中的幻灯片,然后遍历幻灯片中的形状。
- 检查 IShape.Click 属性是否为 None。如果不是,将该属性设置为 IShape.Click.get_NoAction() 方法的结果以移除超链接。
- 使用 Presentation.SaveToFile() 方法保存演示文稿。
- Python
from spire.presentation import Presentation, FileFormat
# 创建一个 Presentation 类的实例
presentation = Presentation()
# 加载一个 PowerPoint 演示文稿
presentation.LoadFromFile("示例.pptx")
# 遍历演示文稿中的幻灯片
for slide in presentation.Slides:
# 遍历幻灯片中的形状
for shape in slide.Shapes:
# 判断形状是否有点击动作
if shape.Click is not None:
# 移除点击动作(设置为无动作)
shape.Click = shape.Click.get_NoAction()
# 保存演示文稿
presentation.SaveToFile("output/移除演示文稿形状超链接.pptx", FileFormat.Pptx2013)
presentation.Dispose()
移除演示文稿中特定类型形状上的超链接
除了直接移除所有形状的超链接外,我们还可以在移除超链接之前判断形状的类型,以查找并删除特定类型形状上的超链接。详细步骤如下:
- 创建一个 Presentation 类的实例,并使用 Presentation.LoadFromFile() 方法加载一个 PowerPoint 演示文稿。
- 遍历演示文稿中的幻灯片,然后遍历幻灯片中的形状。
- 检查形状是否是 IEmbedImage、ITable 或 IChart 类的实例。如果是,则检查该形状的 IShape.Click 属性是否为 None。如果不是,将该属性设置为 IShape.Click.get_NoAction() 方法的结果,以移除超链接。
- 使用 Presentation.SaveToFile() 方法保存演示文稿。
- Python
from spire.presentation import Presentation, FileFormat, IEmbedImage, ITable, IChart
# 创建一个 Presentation 类的实例
presentation = Presentation()
# 加载一个 PowerPoint 演示文稿
presentation.LoadFromFile("示例.pptx")
# 遍历演示文稿中的幻灯片
for slide in presentation.Slides:
# 遍历幻灯片中的形状
for shape in slide.Shapes:
# 判断形状是否为嵌入图像、表格或图表
if isinstance(shape, (IEmbedImage, ITable, IChart)):
# 检查形状是否有点击动作
if shape.Click is not None:
# 移除超链接(设置点击动作为无动作)
shape.Click = shape.Click.get_NoAction()
# 保存演示文稿
presentation.SaveToFile("output/移除演示文稿特定形状超链接.pptx", FileFormat.Pptx2013)
presentation.Dispose()
移除演示文稿中表格文本上的超链接
要删除演示文稿表格内文本的超链接,需要先找出表格类型的形状,然后遍历表格的单元格以及每个单元格中的文本范围。之后,可以通过将 TextRange.ClickAction 属性设置为 None 来删除每个单元格中文本范围上的超链接。详细步骤如下:
- 创建一个 Presentation 类的实例,并使用 Presentation.LoadFromFile() 方法加载一个 PowerPoint 演示文稿。
- 遍历演示文稿中的幻灯片,然后遍历幻灯片中的形状。
- 检查形状是否为 ITable 类的实例。如果是,则遍历表格中的行,然后遍历行中的单元格。
- 遍历单元格中的段落,然后遍历段落中的文本范围。
- 检查文本范围的 TextRange.ClickAction 属性是否为 None。如果不是,将该属性的值设置为 None 以移除超链接。
- 使用 Presentation.SaveToFile() 方法保存演示文稿。
- Python
from spire.presentation import Presentation, ITable, FileFormat
# 创建一个 Presentation 类的实例
presentation = Presentation()
# 加载一个 PowerPoint 演示文稿
presentation.LoadFromFile("示例.pptx")
# 遍历演示文稿中的幻灯片
for slide in presentation.Slides:
# 遍历幻灯片中的形状
for shape in slide.Shapes:
# 判断形状是否为表格
if isinstance(shape, ITable):
# 获取表格
table = shape
# 遍历表格中的行
for row in table.TableRows:
# 遍历行中的单元格
for cell in row:
# 遍历单元格中的段落
for para in cell.TextFrame.Paragraphs:
# 遍历段落中的文本范围
for text_range in para.TextRanges:
# 判断文本范围是否包含超链接
if text_range.ClickAction is not None:
# 移除超链接
text_range.ClickAction = None
# 保存演示文稿
presentation.SaveToFile("output/移除演示文稿表格文本超链接.pptx", FileFormat.Pptx2013)
presentation.Dispose()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。