feat(text): add shrink_text_to_fit method for dynamic font resizing #1107
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem & Solution: Text Autofit in python-pptx
The Problem
When you set
text_frame.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPEin python-pptx, it only sets the XML flag (a:normAutofit). PowerPoint is supposed to recalculate the font size when opening the file, but it doesn't do it automatically - you have to manually open the file and activate/deactivate the functionality to trigger the resize.The Solution
I added a new method
shrink_text_to_fit()to theTextFrameclass that:TextFitterclassdefRPr)TEXT_TO_FIT_SHAPEflag so PowerPoint continues to auto-adjust if text is modified laterUsage
Files Modified
src/pptx/text/text.pyshrink_text_to_fit()methodsrc/pptx/text/layout.pyI also added an unit test to, that pass.