Changing font for part of text in python pptx

When working with Python pptx library, you may come across a situation where you need to change the font for a specific part of the text in a PowerPoint presentation. In this article, we will explore three different ways to achieve this.

Option 1: Using the run.font property

The first option involves using the run.font property of the TextFrame object in pptx library. This property allows us to modify the font attributes for a specific run of text within a paragraph.

from pptx import Presentation

# Load the PowerPoint presentation
presentation = Presentation('presentation.pptx')

# Get the first slide
slide = presentation.slides[0]

# Get the first shape on the slide
shape = slide.shapes[0]

# Get the text frame of the shape
text_frame = shape.text_frame

# Get the first paragraph in the text frame
paragraph = text_frame.paragraphs[0]

# Get the first run in the paragraph
run = paragraph.runs[0]

# Change the font for the run
run.font.name = 'Arial'
run.font.size = Pt(12)
run.font.bold = True

# Save the modified presentation
presentation.save('modified_presentation.pptx')

This code snippet demonstrates how to change the font for the first run of text in the first paragraph of the first shape on the first slide of a PowerPoint presentation. You can modify the font attributes such as name, size, and boldness according to your requirements.

Option 2: Using the add_run method

The second option involves using the add_run method of the TextFrame object to add a new run of text with the desired font attributes.

from pptx import Presentation
from pptx.util import Pt

# Load the PowerPoint presentation
presentation = Presentation('presentation.pptx')

# Get the first slide
slide = presentation.slides[0]

# Get the first shape on the slide
shape = slide.shapes[0]

# Get the text frame of the shape
text_frame = shape.text_frame

# Get the first paragraph in the text frame
paragraph = text_frame.paragraphs[0]

# Add a new run with the desired font attributes
new_run = paragraph.add_run()
new_run.text = "New Text"
new_run.font.name = 'Arial'
new_run.font.size = Pt(12)
new_run.font.bold = True

# Save the modified presentation
presentation.save('modified_presentation.pptx')

This code snippet demonstrates how to add a new run of text with the desired font attributes to the first paragraph of the first shape on the first slide of a PowerPoint presentation. You can modify the font attributes and the text according to your requirements.

Option 3: Using the _element property

The third option involves using the _element property of the TextFrame object to directly modify the XML structure of the presentation. This option provides more flexibility but requires a deeper understanding of the pptx library and the underlying XML structure.

from pptx import Presentation
from pptx.util import Pt
from pptx.oxml.ns import nsdecls
from pptx.oxml import parse_xml

# Load the PowerPoint presentation
presentation = Presentation('presentation.pptx')

# Get the first slide
slide = presentation.slides[0]

# Get the first shape on the slide
shape = slide.shapes[0]

# Get the text frame of the shape
text_frame = shape.text_frame

# Get the first paragraph in the text frame
paragraph = text_frame.paragraphs[0]

# Get the first run in the paragraph
run = paragraph.runs[0]

# Modify the XML structure of the run
xml = run._element
xml.get_or_add('a:rPr').set(nsdecls('a', 'r'), 'b="1"')
xml.get_or_add('a:rPr').set(nsdecls('a', 'r'), 'sz="1200"')
xml.get_or_add('a:rPr').set(nsdecls('a', 'r'), 'rFont="Arial"')

# Save the modified presentation
presentation.save('modified_presentation.pptx')

This code snippet demonstrates how to directly modify the XML structure of the first run of text in the first paragraph of the first shape on the first slide of a PowerPoint presentation. You can modify the XML attributes such as boldness, size, and font name according to your requirements.

After exploring these three options, it is evident that Option 1, using the run.font property, is the most straightforward and recommended approach for changing the font for a specific part of the text in a PowerPoint presentation using Python pptx library. It provides a clean and intuitive way to modify the font attributes without directly manipulating the XML structure.

Rate this post

13 Responses

    1. Option 2 might be easier, but convenience shouldnt always be the ultimate factor. Sometimes its worth putting in a little extra effort for a better outcome. Just saying.

    1. I couldnt disagree more! Option 2 might seem easy, but its just a quick fix. Complicated hacks are where the real innovation lies. Dont settle for simplicity, challenge yourself! 💪🏼

    1. Are you serious? Option 1 is a total waste of time and money. Option 2 might require some effort, but at least its effective. As for option 3, its called taking a risk for a reason. Dont be afraid to step out of your comfort zone once in a while.

Leave a Reply

Your email address will not be published. Required fields are marked *

Table of Contents