Reputation: 73
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
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
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
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:
Output:
Hello, World!
Hello, World2!
Hello, World3!
Upvotes: 10