我试图在一个烧瓶服务器上使用python创建一个文件。所有这些都是有效的,甚至下载也是由于我在代码中使用text_frame.auto_size时出现的问题而产生的。LibreOffice印象很好地显示了文本,但MS没有正确地显示文本。
这是解释这个问题的图片-
LibreOffice -

Powerpoint -

另外,这是我使用的代码-
text_box = slide.shapes.add_textbox(left, top, width, height)
text_frame = text_box.text_frame
text_frame.word_wrap = True
text_frame.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE你知道我在这里做错什么了吗?
发布于 2017-01-27 19:25:06
不幸的是,这是PowerPoint的一个限制,也是一个不寻常的地方(在我的经验中),LibreOffice实际上做得更好。
您会注意到,如果您单击PowerPoint文本,插入一个空格,然后删除它,文本将自动自动安装。这可能不能解决问题,但它指出了原因。
在幻灯片后面的XML中,当前文本框的“自动安装”字体大小被缓存。当演示文稿打开时,LibreOffice会自动重新计算这个缓存的图形;而PowerPoint不会。
计算“自动安装”字体大小是呈现引擎的工作,它可以访问字体大小、行/字中断等。python-pptx不包括呈现引擎,也没有访问渲染引擎的权限(据我所知,在Python中不存在)。所以它能做的最好的就是估计它,而且它不喜欢那样做,因为这是进入渲染过程。
但是,有一个以案文()方法的形式出现的实验性特性,它可能会让您获得更多的机会。基本上,这种能力是如此的需要,以至于有人愿意赞助一个“尽最大努力”的解决方案,这就是该方法所代表的。该链接中的文档说明了如何使用它及其局限性。
请注意,该方法是实验性的,这意味着如果它不按您需要的方式工作,它就不会被视为一个bug。如果你能做得更好,你可以自由地阐述它。
https://stackoverflow.com/questions/41893241
复制相似问题