python-pptx - 设置校对语言
python-pptx - set proofing language
我想使用 python-pptx 模块更改给定 powerpoint 演示文稿中每个包含文本的形状的校对语言。
不幸的是我没有管理。 :(
我正在使用 Python 3.6.3 和 python-pptx 0.6.7。
我的代码如下所示:
from pptx import Presentation
from pptx.enum.lang import MSO_LANGUAGE_ID
# In this example code, all proofing language is set to ENGLISH_UK
# all languages can be found in the docs for python-pptx
new_language = MSO_LANGUAGE_ID.ENGLISH_UK
input_file = 'test_pptx.pptx'
output_file = input_file[:-5] + '_modified.pptx'
# Open the presentation
prs = Presentation(input_file)
# iterate through all slides
for slide_no, slide in enumerate(prs.slides):
# iterate through all shapes/objects on one slide
for shape in slide.shapes:
# check if the shape/object has text (pictures e.g. don't have text)
if shape.has_text_frame:
# print some output to the console for now
print('SLIDE NO# ', slide_no + 1)
print('Object-Name: ', shape.name)
print('Text -->', shape.text)
# check for each paragraph of text for the actual shape/object
for paragraph in shape.text_frame.paragraphs:
for run in paragraph.runs:
# display the current language
print('Actual set language: ', run.font.language_id)
# set the 'new_language'
run.font.language_id = new_language
else:
print('SLIDE NO# ', slide_no + 1, ': This object "', shape.name, '" has no text.')
print(' +++++ next element +++++ ')
print('--------- next slide ---------')
# save pptx with new filename
prs.save(output_file)
此代码现在可以使用了! (再次感谢史蒂夫!)
请帮忙!提前致谢!
我实际上并不完全确定校对功能决定使用哪个词典的所有规则,但语言设置在 运行 级别,我认为这是一个很好的起点.
这在一定程度上是有道理的,因为您可以在一段文本中使用外国短语,而只有形状级别的语言设置不支持这种情况。
因此,一旦您通过 .has_text_frame
测试,您将需要一些额外的代码:
for paragraph in shape.text_frame.paragraphs:
for run in paragraph.runs:
font = run.font
print(font.language_id)
这应该给你这样的东西:
TURKISH (1055)
ENGLISH_UK (2057)
...
请注意,通过 .xml_value
属性 上可用的标准语言代码,语言 ID 值具有一些附加信息,因此您可以将输出详细说明为:
for run in paragraph.runs:
font = run.font
language_id = font.language_id
print('\'%s\'' % run.text, language_id, language_id.xml_value)
得到类似的东西:
'the rain in ' ENGLISH_US (1033) en-US
'España' SPANISH (1034) es-ES_tradnl
...
我想使用 python-pptx 模块更改给定 powerpoint 演示文稿中每个包含文本的形状的校对语言。 不幸的是我没有管理。 :(
我正在使用 Python 3.6.3 和 python-pptx 0.6.7。
我的代码如下所示:
from pptx import Presentation
from pptx.enum.lang import MSO_LANGUAGE_ID
# In this example code, all proofing language is set to ENGLISH_UK
# all languages can be found in the docs for python-pptx
new_language = MSO_LANGUAGE_ID.ENGLISH_UK
input_file = 'test_pptx.pptx'
output_file = input_file[:-5] + '_modified.pptx'
# Open the presentation
prs = Presentation(input_file)
# iterate through all slides
for slide_no, slide in enumerate(prs.slides):
# iterate through all shapes/objects on one slide
for shape in slide.shapes:
# check if the shape/object has text (pictures e.g. don't have text)
if shape.has_text_frame:
# print some output to the console for now
print('SLIDE NO# ', slide_no + 1)
print('Object-Name: ', shape.name)
print('Text -->', shape.text)
# check for each paragraph of text for the actual shape/object
for paragraph in shape.text_frame.paragraphs:
for run in paragraph.runs:
# display the current language
print('Actual set language: ', run.font.language_id)
# set the 'new_language'
run.font.language_id = new_language
else:
print('SLIDE NO# ', slide_no + 1, ': This object "', shape.name, '" has no text.')
print(' +++++ next element +++++ ')
print('--------- next slide ---------')
# save pptx with new filename
prs.save(output_file)
此代码现在可以使用了! (再次感谢史蒂夫!)
请帮忙!提前致谢!
我实际上并不完全确定校对功能决定使用哪个词典的所有规则,但语言设置在 运行 级别,我认为这是一个很好的起点.
这在一定程度上是有道理的,因为您可以在一段文本中使用外国短语,而只有形状级别的语言设置不支持这种情况。
因此,一旦您通过 .has_text_frame
测试,您将需要一些额外的代码:
for paragraph in shape.text_frame.paragraphs:
for run in paragraph.runs:
font = run.font
print(font.language_id)
这应该给你这样的东西:
TURKISH (1055)
ENGLISH_UK (2057)
...
请注意,通过 .xml_value
属性 上可用的标准语言代码,语言 ID 值具有一些附加信息,因此您可以将输出详细说明为:
for run in paragraph.runs:
font = run.font
language_id = font.language_id
print('\'%s\'' % run.text, language_id, language_id.xml_value)
得到类似的东西:
'the rain in ' ENGLISH_US (1033) en-US
'España' SPANISH (1034) es-ES_tradnl
...