【问题标题】:How to keep original text formatting of text with python powerpoint?如何使用 python powerpoint 保持文本的原始文本格式?
【发布时间】:2017-07-21 21:35:11
【问题描述】:

我想在不更改格式的情况下更新文本框中的文本。换句话说,我想在更改文本的同时保留原始文本的原始格式

我可以使用以下内容更新文本,但在此过程中格式会完全改变。

from pptx import Presentation
prs = Presentation("C:\\original_powerpoint.pptx")
sh = prs.slides[0].shapes[0]
sh.text_frame.paragraphs[0].text = 'MY NEW TEXT'
prs.save("C:\\new_powerpoint.pptx")

如何在保持原始格式的同时更新文本?

我还尝试了以下方法:

from pptx import Presentation
prs = Presentation("C:\\original_powerpoint.pptx")
sh = prs.slides[0].shapes[0]
p = sh.text_frame.paragraphs[0]
original_font = p.font
p.text = 'NEW TEXT'
p.font = original_font

但是我得到以下错误:

Traceback (most recent call last):
  File "C:\Codes\powerpoint_python_script.py", line 24, in <module>
    p.font = original_font
AttributeError: can't set attribute

【问题讨论】:

  • 您发布的代码的哪一行给出了错误并不明显。并给出完整的错误信息。
  • 感谢您的建议。我刚刚在上面发布了。

标签: python formatting powerpoint python-pptx


【解决方案1】:

文本框架由段落组成,段落由运行组成。所以你需要在运行中设置文本。

可能你只有一次运行,你的代码可以这样更改:

from pptx import Presentation
prs = Presentation("C:\\original_powerpoint.pptx")
sh = prs.slides[0].shapes[0]
sh.text_frame.paragraphs[0].runs[0].text = 'MY NEW TEXT'
prs.save("C:\\new_powerpoint.pptx")

字符格式(字体特征)在运行时指定 等级。一个段落对象包含一个或多个(通常是多个)运行。 分配给 Paragraph.text 时,段落中的所有运行都是 替换为一个新的运行。这就是为什么文本格式 消失;因为包含该格式的运行消失了。

【讨论】:

  • 如果您在文本运行中使用 PPT 的 Replace 方法而不是仅仅更改文本,则格式会被保留。是否可以在 Python 中访问它对于读者和其他有帮助的 Python 线索者来说是一个练习。我没有通过两个测试中的第二个。 ;-)
猜你喜欢
  • 2014-10-09
  • 2020-05-10
  • 2012-11-27
  • 2013-08-10
  • 2016-07-28
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多