如何将动态页码插入添加的幻灯片中?
How can dynamic page numbers be inserted into added slides?
通过修改后的 python-pptx 添加幻灯片时,每张幻灯片上的幻灯片编号都会显示占位符。但是,该字段中出现的不是实际的幻灯片编号,而是单词 "Slide Number"。
其他答案提到使用静态文本框,但我们需要使用占位符,因为我们将创建幻灯片传输到各种客户端母版。标准文本框无法正确调整以适应不同的布局。我们还需要浮动框,以便我们可以在某些页面上将照片放在它后面。最后,它必须是动态的,因为之后我们经常随机播放页面,因此将索引作为静态数字传递给它会导致问题。
是否有字符串或命令可以插入到占位符中自动拉出幻灯片在牌组中的位置?大师使用组合“<#>”,但这在作为字符串传递时不起作用。
为我的无知道歉,我只使用 python 和 python-pptx 几个星期(非常感谢它的创造者!)。
PowerPoint 中的 "auto-update" 幻灯片编号是 字段 。 XML 看起来像这样:
<a:fld id="{1F4E2DE4-8ADA-4D4E-9951-90A1D26586E7}" type="slidenum">
<a:rPr lang="en-US" smtClean="0"/>
<a:t>2</a:t>
</a:fld>
所以简短回答你的问题是否。没有可以在文本框中插入触发此 XML 被插入的字符串,并且也没有 API 支持添加字段。
方法是为文本框获取一个 <a:p>
元素,然后使用 lxml 调用将此 XML 插入其中(在其他 python-pptx
个帖子)。
您可以像这样获取 a:p
元素:
p = textbox.text_frame.paragraphs[0]._p
类似这样的方法可能有效,并且至少提供了该方法的草图:
from pptx.oxml import parse_xml
from pptx.oxml.ns import nsdecls
# ---get a textbox paragraph element---
p = your_textbox.text_frame.paragraphs[0]._p
# ---add fld element---
fld_xml = (
'<a:fld %s id="{1F4E2DE4-8ADA-4D4E-9951-90A1D26586E7}" type="slidenum">\n'
' <a:rPr lang="en-US" smtClean="0"/>\n'
' <a:t>2</a:t>\n'
'</a:fld>\n' % nsdecls("a")
)
fld = parse_xml(fld_xml)
p.append(fld)
a:t
元素中包含的数字是缓存的幻灯片编号,PowerPoint 在打开演示文稿时可能不会自动更新。如果是这种情况,您需要在插入时正确设置它,但它会在您随机播放幻灯片时自动更新。
通过修改后的 python-pptx 添加幻灯片时,每张幻灯片上的幻灯片编号都会显示占位符。但是,该字段中出现的不是实际的幻灯片编号,而是单词 "Slide Number"。
其他答案提到使用静态文本框,但我们需要使用占位符,因为我们将创建幻灯片传输到各种客户端母版。标准文本框无法正确调整以适应不同的布局。我们还需要浮动框,以便我们可以在某些页面上将照片放在它后面。最后,它必须是动态的,因为之后我们经常随机播放页面,因此将索引作为静态数字传递给它会导致问题。
是否有字符串或命令可以插入到占位符中自动拉出幻灯片在牌组中的位置?大师使用组合“<#>”,但这在作为字符串传递时不起作用。
为我的无知道歉,我只使用 python 和 python-pptx 几个星期(非常感谢它的创造者!)。
PowerPoint 中的 "auto-update" 幻灯片编号是 字段 。 XML 看起来像这样:
<a:fld id="{1F4E2DE4-8ADA-4D4E-9951-90A1D26586E7}" type="slidenum">
<a:rPr lang="en-US" smtClean="0"/>
<a:t>2</a:t>
</a:fld>
所以简短回答你的问题是否。没有可以在文本框中插入触发此 XML 被插入的字符串,并且也没有 API 支持添加字段。
方法是为文本框获取一个 <a:p>
元素,然后使用 lxml 调用将此 XML 插入其中(在其他 python-pptx
个帖子)。
您可以像这样获取 a:p
元素:
p = textbox.text_frame.paragraphs[0]._p
类似这样的方法可能有效,并且至少提供了该方法的草图:
from pptx.oxml import parse_xml
from pptx.oxml.ns import nsdecls
# ---get a textbox paragraph element---
p = your_textbox.text_frame.paragraphs[0]._p
# ---add fld element---
fld_xml = (
'<a:fld %s id="{1F4E2DE4-8ADA-4D4E-9951-90A1D26586E7}" type="slidenum">\n'
' <a:rPr lang="en-US" smtClean="0"/>\n'
' <a:t>2</a:t>\n'
'</a:fld>\n' % nsdecls("a")
)
fld = parse_xml(fld_xml)
p.append(fld)
a:t
元素中包含的数字是缓存的幻灯片编号,PowerPoint 在打开演示文稿时可能不会自动更新。如果是这种情况,您需要在插入时正确设置它,但它会在您随机播放幻灯片时自动更新。