scanny / python-pptx

Create Open XML PowerPoint documents in Python
MIT License
2.39k stars 518 forks source link

auto_size not working #982

Closed xlar8or closed 2 months ago

xlar8or commented 3 months ago

Hello, I'm creating a textbox and I want it to be sized so it fits the whole text in the TextFrame. I'm doing the following code:

textbox = slide.shapes.add_textbox(0, 0, Inches(3), Inches(1))
text_frame = textbox.text_frame
text_frame.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
text_frame.auto_size = MSO_AUTO_SIZE.SHAPE_TO_FIT_TEXT
text_frame.word_wrap = True

This is what I get:

image

If i go to the Textbox properties I have the following:

image

If I click again on the Resize shape to fit text then I get the correct behavior:

image

FYI: I don't have PowerPoint, I'm using WPS, could that contribute to the problem?

mszbot commented 2 months ago

The problem is not because of WPS.

Auto sizing font to fit the textbox is not easy. There is an experimental feature fit_text() but it doesn't always work. To learn more read this: https://python-pptx.readthedocs.io/en/latest/dev/analysis/txt-autofit-text.html?highlight=auto%20fit

scanny commented 2 months ago

Closing as not actionable. @xlar8or there is unlikely to be further work on auto_size and it entails partially implementing a renderer with is out-of-scope on principle for this library.