我想使用python(python-pptx)从ppt读取所有页脚并将其存储在不同的Strings中。该文档没有太大帮助。有人可以帮我吗?
>> slide_placeholders = slide.placeholders
>> len(slide.placeholders)
4
>> slide.placeholders[4]
KeyError...
我期望得到页脚对象并以某种方式读取它。
答案 0 :(得分:0)
Slide.placeholders
返回一个_SlidePlaceholders
对象,该对象具有不寻常的语义,因为标识占位符可能很棘手。如上所用,它具有dict
语义,其键为占位符的idx
属性的值。 idx
属性由创建幻灯片的 slide-layout 决定,因此,它是其占位符形状的来源。这些idx
值本质上是任意的,并且不能保证是连续的。
您可以像这样发现idx值:
for placeholder in slide.placeholders:
print(placeholder.placeholder_format.idx)
现在的问题是:“我想要哪个占位符?”
有一些策略:
由标识idx
值::由同一幻灯片布局形成的两张不同幻灯片上的特定占位符将具有相同的{{1 }}值。如果您发现idx
的值,则使用idx
是一个好方法。请注意,这是slide.placeholders[idx]
(键)查找,而不是dict
(偏移量)查找。
按占位符类型标识:占位符有不同的类型。 https://python-pptx.readthedocs.io/en/latest/api/enum/PpPlaceholderType.html#ppplaceholdertype。如果您想要的是幻灯片上该类型的唯一类型,则可以使用
list
from pptx.enum.shapes import PP_PLACEHOLDER
def find_placeholder():
for placeholder in slide.placeholders:
if p.placeholder_format.type == PP_PLACEHOLDER.FOOTER:
return placeholder
print("not found")