Python-pptx: добавление слайда с примечаниями приводит к сбою PowerPoint 2013

У меня есть скрипт, содержащий что-то похожее на урезанный код ниже. Цель состоит в том, чтобы добавить слайд с примечаниями (и текст) под обычным слайдом. Он отлично работает в системе с установленной PowerPoint 2007.

from pptx import Presentation

prs = Presentation()

title_slide_layout = prs.slide_layouts[0]
blank_slide_layout = prs.slide_layouts[6]

title_slide = prs.slides.add_slide(title_slide_layout)
title = title_slide.shapes.title
title.text = "Title"

blank_slide = prs.slides.add_slide(blank_slide_layout)
notes_slide = blank_slide.notes_slide
notes_slide.notes_text_frame.text = "foo"

prs.save('example.pptx')

К сожалению, при использовании PowerPoint 2013 (с Windows 7): код выполняется без ошибок, но когда я пытаюсь открыть презентацию PowerPoint, я получаю уведомление о том, что "Microsoft PowerPoint перестал работать". Эта ошибка исправлена, когда две строки notes_slide в приведенном выше коде удалены (т.е. в моем коде больше ничего не вызывает проблему).

Кто-нибудь может дать просветление о том, что вызывает это?

1 ответ

Хорошо, у меня есть решение моего собственного вопроса, но я не слишком доволен обходным решением.

Оказывается, что для PowerPoint 2013, если вы хотите добавить слайд с примечаниями к одному или нескольким слайдам, вы должны добавить слайд с примечаниями (без текста) ко всем другим слайдам, иначе PowerPoint 2013 будет аварийно завершать работу.

from pptx import Presentation

prs = Presentation()

title_slide_layout = prs.slide_layouts[0]
blank_slide_layout = prs.slide_layouts[6]

title_slide = prs.slides.add_slide(title_slide_layout)
title = title_slide.shapes.title
title.text = "Title"

notes_slide = title_slide.notes_slide #The only new line of code

blank_slide = prs.slides.add_slide(blank_slide_layout)
notes_slide = blank_slide.notes_slide
notes_slide.notes_text_frame.text = "foo"

prs.save('example.pptx')

У кого-нибудь был другой опыт?

Другие вопросы по тегам