这两个 PowerPoint Shapes 在哪些方面不同(通过 API 访问)

In which way are these two PowerPoint Shapes different (accessed via API)

作为开源辅助技术项目的一部分 (here), I am accessing a PowerPoint file by python API (python-pptx)。

当我查看颜色时,某些形状导致异常。但很难看出是哪一个。

我创建了这个最小的例子:https://www.dropbox.com/s/o5z22lqwb66jemq/forUpload.pptx?dl=0

事实上,这是一个屏幕截图:

它由一张幻灯片组成,左边是有效的形状,右边是失败的形状。使用格式刷将使形状起作用(或不起作用,取决于格式的来源),但我已经通过各种方法检查了我能想到的格式,并且两组形状看起来完全相同。

最小示例中的两组形状有何不同?

(对于那些可能从 API 的角度感兴趣的人。导致问题的行是:

self.colours[co][ro] = shape.fill.fore_colour.rgb

https://github.com/joereddington/TheOpenVoiceFactory/blob/master/grab_text.py

例外情况是:

Traceback (most recent call last):   File "grab_text.py", line 374, in <module>
    grids = extract_grid(prs)   File "grab_text.py", line 353, in extract_grid
    grids.append(Grid(prs, slide, gridSize))   File "grab_text.py", line 119, in __init__
    self.process_shape(shape)   File "grab_text.py", line 164, in process_shape
    ro] = shape.fill.fore_color.rgb   File "/Library/Python/2.7/site-packages/pptx/dml/fill.py", line 43, in fore_color
    return self._fill.fore_color   File "/Library/Python/2.7/site-packages/pptx/dml/fill.py", line 161, in fore_color
    raise TypeError(tmpl) TypeError: a transparent (background) fill has no foreground color

)

您需要致电:

shape.fill.solid()

在尝试访问 fore_color 属性之前。

一个填充可以有多种类型,每种类型都有不同的属性集。 .fore_color 属性是实心填充特有的。默认情况下,填充是透明的(即 None)。

这里的文档中有更多关于它的信息: http://python-pptx.readthedocs.io/en/latest/user/autoshapes.html#fill