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 天的临时许可证。