Jacristi
Jacristi

Reputation: 173

How to delete unpopulated placeholder items using python-pptx

This is very simple, but I cannot find the actual method anywhere in the documentation or otherwise.

I am using the python-pptx module and all I need to do is delete a single placeholder item, an empty text box, on some slides (without having to create a completely new layout just for these slides) - the closest thing to an answer is here: http://python-pptx.readthedocs.io/en/latest/user/placeholders-understanding.html under Unpopulated vs. populated but it still does not say how to actually delete/remove the placeholder.

I've tried all the obvious methods .delete(), .remove(), etc.

Upvotes: 17

Views: 8628

Answers (2)

jrinker
jrinker

Reputation: 2040

Here is a follow-up to scanny's answer based on the helloworld example in the docs. The code deletes the subtitle placeholder, which is empty in this case.

from pptx import Presentation

prs = Presentation()

title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)

title = slide.shapes.title
title.text = "Hello, World!"

subtitle = slide.placeholders[1]
sp = subtitle.element
sp.getparent().remove(sp)

prs.save('test.pptx')

Upvotes: 2

scanny
scanny

Reputation: 28903

There is no API support for this, but if you delete the text box shape element, that should do the trick. It would be something like this:

textbox = shapes[textbox_idx]
sp = textbox.element
sp.getparent().remove(sp)

Using the textbox variable/reference after this operation is not likely to go well. But otherwise, I expect this will do the trick.

Upvotes: 19

Related Questions