首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python生成ppt在powerpoint和libreoffice中的不同行为

用python生成ppt在powerpoint和libreoffice中的不同行为
EN

Stack Overflow用户
提问于 2017-01-27 11:45:00
回答 1查看 557关注 0票数 0

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

这是解释这个问题的图片-

LibreOffice -

Powerpoint -

另外,这是我使用的代码-

代码语言:javascript
复制
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

你知道我在这里做错什么了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-27 19:25:06

不幸的是,这是PowerPoint的一个限制,也是一个不寻常的地方(在我的经验中),LibreOffice实际上做得更好。

您会注意到,如果您单击PowerPoint文本,插入一个空格,然后删除它,文本将自动自动安装。这可能不能解决问题,但它指出了原因。

在幻灯片后面的XML中,当前文本框的“自动安装”字体大小被缓存。当演示文稿打开时,LibreOffice会自动重新计算这个缓存的图形;而PowerPoint不会。

计算“自动安装”字体大小是呈现引擎的工作,它可以访问字体大小、行/字中断等。python-pptx不包括呈现引擎,也没有访问渲染引擎的权限(据我所知,在Python中不存在)。所以它能做的最好的就是估计它,而且它不喜欢那样做,因为这是进入渲染过程。

但是,有一个以案文()方法的形式出现的实验性特性,它可能会让您获得更多的机会。基本上,这种能力是如此的需要,以至于有人愿意赞助一个“尽最大努力”的解决方案,这就是该方法所代表的。该链接中的文档说明了如何使用它及其局限性。

请注意,该方法是实验性的,这意味着如果它不按您需要的方式工作,它就不会被视为一个bug。如果你能做得更好,你可以自由地阐述它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41893241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档