如何更改 .pptx 文件的特定单词的字体颜色?
How to change specific words' font color of .pptx file?
searchInput = "chapter"
try:
prs = Presentation("e:/test3/ch7.pptx")
for slide in prs.slides:
for shape in slide.shapes:
if hasattr(shape, "text"):
shape.text = shape.text.lower()
for paragraph in shape.text_frame.paragraphs:
for run in paragraph.runs:
if searchInput in run.text:
print(run.text)
#run.font.color.rgb = RGBColor(0, 0, 255)
except PermissionError:
pass
prs.save("e:/test3/ch7_modified1.pptx")
现在,我可以检查这个 "ch7.pptx" 文件是否包含我要查找的特定单词。
如果我打印(run.text),它打印出来
chapter 7: synchronization examples
chapter 7: synchronization examples
end of chapter 7
所以,我看到有几个字"chapter"。
但是,我想在我的 "ch7.pptx" 中将 "chapter" 的颜色更改为黄色,然后我想保存到 "ch7_modified.pptx"
我一直在寻找如何改变颜色,但它不能正常工作。请帮帮我!
不能保证给定的单词将以单个单词开头和结尾运行;任何给定的单词都可以拆分成多个 运行,并且它的 运行 可能包含前面和后面的文本。 PowerPoint 会随心所欲地拆分 运行s,可能是为了突出显示拼写错误的单词,或者只是在您暂停输入或进入修复拼写错误或其他问题时。
关于 运行 唯一可以肯定的是它包含的所有字符共享相同的字符格式。
所以做你想做的事需要一个更复杂的算法和一些低级的功能 python-pptx
还没有。
一般的方法是这样的:
- 查找包含搜索词的段落
- 从该段落中,找到包含该词的 运行 的子序列。通常这是一个序列(列表),可以包含单词开始之前和结束之后的文本。
- 将这些 运行 中的第一个在单词开头一分为二(除非它从偶数 运行 边界开始)
- 在单词末尾将这些 运行 中的最后一个分成两部分(除非它以偶数 运行 边界结束)
- 将包含全部或部分单词的所有(中间)运行的格式设置为您想要的设置
目前没有 API 支持 运行-splitting 位,它需要使用 python-pptx
中的底层 XML 对象,这有点像进阶话题。如果你想这样做,在 "python-pptx workaround function" 上搜索 Google 会给你一个起点。
searchInput = "chapter"
try:
prs = Presentation("e:/test3/ch7.pptx")
for slide in prs.slides:
for shape in slide.shapes:
if hasattr(shape, "text"):
shape.text = shape.text.lower()
for paragraph in shape.text_frame.paragraphs:
for run in paragraph.runs:
if searchInput in run.text:
print(run.text)
#run.font.color.rgb = RGBColor(0, 0, 255)
except PermissionError:
pass
prs.save("e:/test3/ch7_modified1.pptx")
现在,我可以检查这个 "ch7.pptx" 文件是否包含我要查找的特定单词。
如果我打印(run.text),它打印出来
chapter 7: synchronization examples
chapter 7: synchronization examples
end of chapter 7
所以,我看到有几个字"chapter"。 但是,我想在我的 "ch7.pptx" 中将 "chapter" 的颜色更改为黄色,然后我想保存到 "ch7_modified.pptx"
我一直在寻找如何改变颜色,但它不能正常工作。请帮帮我!
不能保证给定的单词将以单个单词开头和结尾运行;任何给定的单词都可以拆分成多个 运行,并且它的 运行 可能包含前面和后面的文本。 PowerPoint 会随心所欲地拆分 运行s,可能是为了突出显示拼写错误的单词,或者只是在您暂停输入或进入修复拼写错误或其他问题时。
关于 运行 唯一可以肯定的是它包含的所有字符共享相同的字符格式。
所以做你想做的事需要一个更复杂的算法和一些低级的功能 python-pptx
还没有。
一般的方法是这样的:
- 查找包含搜索词的段落
- 从该段落中,找到包含该词的 运行 的子序列。通常这是一个序列(列表),可以包含单词开始之前和结束之后的文本。
- 将这些 运行 中的第一个在单词开头一分为二(除非它从偶数 运行 边界开始)
- 在单词末尾将这些 运行 中的最后一个分成两部分(除非它以偶数 运行 边界结束)
- 将包含全部或部分单词的所有(中间)运行的格式设置为您想要的设置
目前没有 API 支持 运行-splitting 位,它需要使用 python-pptx
中的底层 XML 对象,这有点像进阶话题。如果你想这样做,在 "python-pptx workaround function" 上搜索 Google 会给你一个起点。