Minerva
Minerva

Reputation: 73

get the title of slides of pptx file using Python

I am trying to get the title of each slide of a powerpoint file using Python. I am using Presentation package in Python but I couldn't find anything that specifies the titles. I have this code that return the content of the powerpoint file. but I need to specify the titles.

from pptx import Presentation

prs = Presentation("pp.pptx")

# text_runs will be populated with a list of strings,
# one for each text run in presentation
text_runs = []

for slide in prs.slides:
    for shape in slide.shapes:
        if not shape.has_text_frame:
            continue
        for paragraph in shape.text_frame.paragraphs:
            for run in paragraph.runs:
                text_runs.append(run.text)

Upvotes: 7

Views: 10443

Answers (3)

Patrice G
Patrice G

Reputation: 97

Previous solutions don't work for me. I found the title in prs.slide.placeholders.part.blob and extract it with regex.

match = re.search(r'<a:t>([^<]*)</a:t>', prs.slide.placeholders.part.blob.decode())
if match:
    title = match.group(1)

Upvotes: 0

Pablo Guerrero
Pablo Guerrero

Reputation: 1054

To build on @eyllanesc's answer, as @scanny points out, slide.shapes.title is a placeholder.

This means you can access the title text like:

from pptx import Presentation

prs = Presentation(ppt_filename)

slide = prs.slides[0]
slide.shapes.title.text = 'New Title'
print('New Title is:')
print(slide.shapes.title.text)

And also change any other of the title placeholder properties such as:

slide.shapes.title.top = 100
slide.shapes.title.left = 100
slide.shapes.title.height = 200

Upvotes: 0

eyllanesc
eyllanesc

Reputation: 243955

This is my Solution:

from pptx import Presentation

filename = path_of_pptx

prs = Presentation(filename)

for slide in prs.slides:
    title = slide.shapes.title.text
    print(title)

Input:

enter image description here

Output:

Hello, World!
Hello, World2!
Hello, World3!

Upvotes: 10

Related Questions