在同一 PowerPoint 文档中创建指向其他幻灯片的超链接
Creating a hyperlink to other slides in the same PowerPoint document
我正在寻找一种方法来添加到同一 PPTX 文档中其他幻灯片的超链接,使用 python-pptx 自动进行。下面是我的测试,没有用。在线搜索暗示了一些使用 ActionSetting、part、target_slide、rels、rPr.add_ihlinkClick 等的解决方案,但我无法完全理解将它们组合在一起。
基本上,期望的结果是创建一个文本,该文本将通过幻灯片编号或幻灯片 ID(如果存在)跳转到任何其他幻灯片
p = table.rows[1].cells[1].text_frame.paragraphs[0]
r = p.add_run()
r.text = "Testing"
r.hyperlink.address = "/ppt/slides/rels/slide1.xml"
python-pptx
中的 ActionSetting
位目前似乎是只读的。所以没有直接 API 支持您正在寻找的内容。如果你想写这些,你需要写一个 extension/workaround 函数。
此处对动作设置功能进行了相当扎实的分析 space:
http://python-pptx.readthedocs.io/en/latest/dev/analysis/shp-hyperlink.html
如果我没记错的话,唯一真正的诀窍是获取目标幻灯片的内部目标 "URL"。我会使用 PowerPoint UI 手工制作一个内部 link 并检查它用 opc-diag
生成的 XML。找到可行的方法可能非常简单,即使它不能解决一般情况。
您还可以 "cheat" 使用 shape.click_action(作为形状,您可以简单地使用包含文本框的形状):
def create_hyperlink(run, shape, to_slide):
shape.click_action.target_slide = to_slide
run.hyperlink.address = shape.click_action.hyperlink.address
run.hyperlink._hlinkClick.action = shape.click_action.hyperlink._hlink.action
run.hyperlink._hlinkClick.rId = shape.click_action.hyperlink._hlink.rId
shape.click_action.target_slide = None
这就是它在 python-pptx-interface 中的完成方式(因为否则我无法获得正确的 rId ^^)。看看 PPTXCreator.add_content_slide.
我正在寻找一种方法来添加到同一 PPTX 文档中其他幻灯片的超链接,使用 python-pptx 自动进行。下面是我的测试,没有用。在线搜索暗示了一些使用 ActionSetting、part、target_slide、rels、rPr.add_ihlinkClick 等的解决方案,但我无法完全理解将它们组合在一起。
基本上,期望的结果是创建一个文本,该文本将通过幻灯片编号或幻灯片 ID(如果存在)跳转到任何其他幻灯片
p = table.rows[1].cells[1].text_frame.paragraphs[0]
r = p.add_run()
r.text = "Testing"
r.hyperlink.address = "/ppt/slides/rels/slide1.xml"
python-pptx
中的 ActionSetting
位目前似乎是只读的。所以没有直接 API 支持您正在寻找的内容。如果你想写这些,你需要写一个 extension/workaround 函数。
此处对动作设置功能进行了相当扎实的分析 space: http://python-pptx.readthedocs.io/en/latest/dev/analysis/shp-hyperlink.html
如果我没记错的话,唯一真正的诀窍是获取目标幻灯片的内部目标 "URL"。我会使用 PowerPoint UI 手工制作一个内部 link 并检查它用 opc-diag
生成的 XML。找到可行的方法可能非常简单,即使它不能解决一般情况。
您还可以 "cheat" 使用 shape.click_action(作为形状,您可以简单地使用包含文本框的形状):
def create_hyperlink(run, shape, to_slide):
shape.click_action.target_slide = to_slide
run.hyperlink.address = shape.click_action.hyperlink.address
run.hyperlink._hlinkClick.action = shape.click_action.hyperlink._hlink.action
run.hyperlink._hlinkClick.rId = shape.click_action.hyperlink._hlink.rId
shape.click_action.target_slide = None
这就是它在 python-pptx-interface 中的完成方式(因为否则我无法获得正确的 rId ^^)。看看 PPTXCreator.add_content_slide.