2017-08-08 164 views
0

我要插入的图片占位符图片。以前我会根据需要获取EXIF信息。这是我的代码:Python的PPTX图像占位符的旋转使得在PowerPoint画面消失(没有的LibreOffice)

placeholder = slide.placeholder[N] 
photo.open() 
ph_picture = placeholder.insert_picture(photo) 
if exif['Orientation'] == LANDSCAPE_ORIENTATION: 
    ph_picture.rotation = 90.0 

当我打开的LibreOffice的pptx生成的文件,图像看起来不错。但在PowerPoint中它们消失了。删除旋转图像的线条会使图像再次出现。

任何线索发生了什么或有什么更好的方式来旋转图像? (我也试过用PIL,但结果甚至更糟)。

回答

0

一般来说,在这种情况下前进的方式是创建一个幻灯片,看起来你想使用PowerPoint(用手)的方式,然后检查它创建看看它是如何接近特征XML。

不幸的是,PowerPoint或OpenOffice的是与规范完全兼容,它们表现出意外的行为,特别是在边缘,在较少使用的功能。因此,即使我期望您会发现python-pptx在这种情况下正在生成预期的XML,但出于某种原因,PowerPoint并没有将其解释为规范将要声明的内容。

但有一个非常高的可能性,如果你能得到的PowerPoint没有消失,它旋转图像,这样做同样的事情,它并会产生你之后的结果的XML。这就是我开始的地方。

这是一个有点怀疑,这是一个图片框不过,我会先用一个正常的图像形状尝试一下,看看它是否有同样的问题。这可能会缩小它的范围。

+0

使用不同类型的布局设计Powerpoint模板对我来说更容易。其中一个图片占位符,所以我不需要插入任何形状。也许问题是我不能旋转PlaceholderPicture,但对我来说很奇怪,因为文档说我会的。然后,您的解决方案是创建新幻灯片并将图片添加为形状,然后尝试旋转它? – danieltellez

+0

@danieltellez我认为你必须做出选择,无论你想诊断问题还是尝试不同的事情来找到有效的东西。两者都是合法的方法。我不知道究竟是什么使这项工作,所以我建议的方法。如果你在PowerPoint中得到一个工作示例,并将形状XML与python-pptx生成的形状进行比较,那很可能会导致精确的诊断。然后你会弄清楚如何让XML看起来是它需要的。 – scanny

+0

@danieltellez关于以正常的图片形状尝试它的建议,我并不是建议你这样做最后的实现,只是运行那个小实验来看看它是否会在你看到的行为上有所不同。当您进一步探索时,我倾向于认为这将是一个有用的数据点。 – scanny