我正在寻找一种方法来添加一个超链接到相同的PPTX文档中的其他幻灯片,自动使用python。下面是我的测试,没有用。网上搜索暗示使用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"
发布于 2016-11-01 19:00:29
现在看来,ActionSetting
位在python-pptx
中是只读的。因此,对于您要寻找的内容没有直接的API支持。如果您想要编写这些函数,就需要编写一个扩展/变通函数。
这里有一个关于动作设置特性空间的非常可靠的分析:http://python-pptx.readthedocs.io/en/latest/dev/analysis/shp-hyperlink.html
如果我没记错的话,唯一真正的诀窍就是获取目标幻灯片的内部目标"URL“。我将使用PowerPoint UI手工创建一个内部链接,并检查它使用opc-diag
生成的XML。即使它没有解决一般的问题,要想找到有用的东西也是非常简单的。
发布于 2020-01-16 21:27:25
您还可以通过使用shape.click_action来“欺骗”(作为形状,只需使用包含textbox的形状):
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接口中就是这样做的(因为我无法得到正确的rId,否则^^)。看看幻灯片。
https://stackoverflow.com/questions/40365829
复制相似问题