1

我正在寻找一种方法来在同一个 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"
4

2 回答 2

1

看起来其中的ActionSettingpython-pptx目前是只读的。因此,对于您要查找的内容,没有直接的 API 支持。如果您希望能够编写这些,则需要编写扩展/解决方法功能。

这里对动作设置功能空间进行了非常可靠的分析:http: //python-pptx.readthedocs.io/en/latest/dev/analysis/shp-hyperlink.html

如果我没记错的话,唯一真正的技巧是获取目标幻灯片的内部目标“URL”。我将使用 PowerPoint UI 手动创建一个内部链接,并检查它使用opc-diag. 即使不能解决一般情况,找到可行的方法也可能非常简单。

于 2016-11-01T19:00:29.307 回答
0

您还可以通过使用 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

于 2020-01-16T21:27:25.253 回答