guilistocco
guilistocco

Reputation: 61

How to make long text fit into a text_frame? Python-pptx

I'm working with python-ppt to create a portfolio of candidates in a Powerpoint presentation. There is one candidate per slide and each of them has provided information about themselves like name, contacts and a minibio (the problem I'm here to solve)

The text_frame, created with values of height and width, must fit the slide but must a contain all lenght of minibios, which is not happening.

In a long phase (>200 char, with font size 12) it exceeds the size of the text box and get "out" of the slide, so, in presentation mode or a PDF file, the "overrun" of text is lost

Is there any way to confine the text to the shape/size of the text_frame? (extra help if the solution wont change font size)

Upvotes: 2

Views: 2143

Answers (2)

guilistocco
guilistocco

Reputation: 61

Just found one parameter that helped to find the answer

When creating a text_box object with slides.shapes.add_textbox() and adding a text_frame to it, the text_frame.word_wrap = True limits the text to be contained inside the dimentions of the text_box

The code shows it better


    # creates text box with add_textbox(left, top, width, height)
    txBox = slide.shapes.add_textbox(Cm(16),Cm(5),Cm(17),Cm(13))
    tf = txBox.text_frame
    tf.word_wrap = True

Before word_wrap parameter

After word_wrap parameter

Upvotes: 3

scanny
scanny

Reputation: 28893

The short answer is "No". PowerPoint is a page-layout environment, and much like the front page of a newspaper, text "story" content needs to be trimmed to fit the allotted space.

We're perhaps not used to this because word-processing, spreadsheet, and web-page content is "flowed" into a (practically) unlimited space, but the area of a PowerPoint slide is quite finite. Also, using it for large text blocks is somewhat of an off-label use. There is a certain amount of flexibility provided by reducing the font size, but not as much as one might expect. Even accommodating 20% additional text requires what appears as a pretty radical change in font size.

I've encountered this problem again and again, and the only solution I have ever seen work reliably is hand-curating the content to fit.

python-pptx has one experimental feature to address this but its operation has never been very satisfactory and it's tricky to get working. https://python-pptx.readthedocs.io/en/latest/api/text.html#pptx.text.text.TextFrame.fit_text

The business of fitting text is the role of a rendering engine, which python-pptx is not.

Upvotes: 2

Related Questions