gpt4 book ai didi

python - 使用python-pptx检查powerpoint中的图像是否具有装饰性

转载 作者:行者123 更新时间:2023-12-03 16:59:02 35 4
gpt4 key购买 nike

我工作的公司要求在 .pptx 文档中列出所有无法访问的图像/形状(没有替代文本,也没有装饰性)。为了自动化这个过程,我正在编写一个脚本来提取指定 .pptx 中所有无法访问的图像/形状并编译一个列表。到目前为止,我已经设法让它打印出没有替代文本的图像的名称、幻灯片 # 和图像块。
不幸的是,在广泛搜索文档后,我发现 python-pptx 包不支持检查图像/形状是否具有装饰性的功能。
我过去没有将 XML 元素映射到对象,并且想知道如何制作一个读取 val 的函数。 adec:decorative 内的属性此 .pptx 文件中的元素(请参阅第 4 行)。

<p:cNvPr id="3" name="Picture 2">
<a:extLst>
<a:ext uri="{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}"><a16:creationId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" id="{77922398-FA3E-426B-895D-97239096AD1F}" /></a:ext>
<a:ext uri="{C183D7F6-B498-43B3-948B-1728B52AA6E4}"><adec:decorative xmlns:adec="http://schemas.microsoft.com/office/drawing/2017/decorative" val="0" /></a:ext>
</a:extLst>
</p:cNvPr>
由于我最近才开始使用这个包,我不确定如何在 python-pptx 中创建自定义元素类。如果有人有任何其他解决方法或建议,请告诉我,谢谢!

最佳答案

创建自定义元素类肯定会起作用,但我认为它是一种极端方法(想想用于杀死蚊子的火箭筒):)。
我倾向于认为你可以用 XPath 完成你想要的事情。查询您可以使用 python-pptx 到达的最近祖先.
像这样的事情会朝着正确的方向发展:

cNvPr = shape._element._nvXxPr.cNvPr
adec_decoratives = cNvPr.xpath(".//adec:decorative")
if adec_decoratives:
print("got one, probably need to look more closely at them")
挑战之一可能是获得 adec注册了命名空间前缀,因为我认为它不是默认的。因此,您可能需要在 XPath 表达式之前执行此代码,也可能是在加载第一个文档之前:
from pptx.oxml.ns import _nsmap

_nsmap["adec"] = "http://schemas.microsoft.com/office/drawing/2017/decorative"]
另外,如果您稍微研究一下 XPath,我认为您实际上可以在 <adec:decorative> 上进行查询。具有 val=0 的元素或任何特定的属性状态满足您的需求。
但这是我推荐的方向。也许您可以在计算出结果后发布结果,以防其他人以后遇到同样的问题。

关于python - 使用python-pptx检查powerpoint中的图像是否具有装饰性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63802783/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com