Ulepsz swoje prezentacje za pomocą AutoFit w Pythonie
Wprowadzenie
Domyślnie, po dodaniu pola tekstowego, Microsoft PowerPoint używa ustawienia Resize shape to fit text dla tego pola — automatycznie zmienia rozmiar pola, aby tekst zawsze w nim mieścił się.

- Gdy tekst w polu staje się dłuższy lub większy, PowerPoint automatycznie powiększa pole — zwiększa jego wysokość — aby pomieścić więcej tekstu.
- Gdy tekst w polu staje się krótszy lub mniejszy, PowerPoint automatycznie zmniejsza pole — zmniejsza jego wysokość — aby usunąć nadmiarową przestrzeń.
W programie PowerPoint są to 4 ważne parametry lub opcje kontrolujące zachowanie autofitu dla pola tekstowego:
- Do not Autofit
- Shrink text on overflow
- Resize shape to fit text
- Wrap text in shape.

Aspose.Slides for Python via Java oferuje podobne opcje — niektóre właściwości klasy TextFrameFormat — które umożliwiają kontrolowanie zachowania autofitu dla pól tekstowych w prezentacjach.
Resize a Shape to Fit Text
Jeśli chcesz, aby tekst w polu zawsze mieścił się w tym polu po wprowadzeniu zmian, musisz użyć opcji Resize shape to fit text. Aby określić to ustawienie, użyj metody setAutofitType (z klasy TextFrameFormat) z wartością Shape.

Ten kod w języku Python pokazuje, jak określić, że tekst musi zawsze mieścić się w swoim polu w prezentacji PowerPoint:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType, Portion, FillType, TextAutofitType, SaveFormat
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
auto_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100)
portion = Portion("lorem ipsum...")
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
auto_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion)
text_frame_format = auto_shape.getTextFrame().getTextFrameFormat()
text_frame_format.setAutofitType(TextAutofitType.Shape)
presentation.save("Output-presentation.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Jeśli tekst stanie się dłuższy lub większy, pole tekstowe zostanie automatycznie powiększone (wzrośnie wysokość), aby zapewnić, że cały tekst się w nim zmieści. Jeśli tekst stanie się krótszy, nastąpi odwrotna operacja.
Do Not Autofit
Jeśli chcesz, aby pole tekstowe lub kształt zachowało swoje wymiary niezależnie od zmian w zawartym tekście, musisz użyć opcji Do not Autofit. Aby określić to ustawienie, użyj metody setAutofitType (z klasy TextFrameFormat) z wartością None.

Ten kod w języku Python pokazuje, jak określić, że pole tekstowe musi zawsze zachować swoje wymiary w prezentacji PowerPoint:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType, Portion, FillType, TextAutofitType, SaveFormat
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
auto_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100)
portion = Portion("lorem ipsum...")
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
auto_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion)
text_frame_format = auto_shape.getTextFrame().getTextFrameFormat()
text_frame_format.setAutofitType(TextAutofitType.None_)
presentation.save("Output-presentation.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Gdy tekst stanie się zbyt długi dla swojego pola, wypłynie na zewnątrz.
Shrink Text on Overflow
Jeśli tekst stanie się zbyt długi dla swojego pola, możesz użyć opcji Shrink text on overflow, aby określić, że rozmiar i odstępy tekstu mają być zmniejszone, aby zmieściły się w polu. Aby określić to ustawienie, użyj metody setAutofitType (z klasy TextFrameFormat) z wartością Normal.

Ten kod w języku Python pokazuje, jak określić, że tekst ma być zmniejszany przy przepełnieniu w prezentacji PowerPoint:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType, Portion, FillType, TextAutofitType, SaveFormat
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
auto_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100)
portion = Portion("lorem ipsum...")
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
auto_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion)
text_frame_format = auto_shape.getTextFrame().getTextFrameFormat()
text_frame_format.setAutofitType(TextAutofitType.Normal)
presentation.save("Output-presentation.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Note
Kiedy użyta jest opcja Shrink text on overflow, ustawienie jest stosowane tylko wtedy, gdy tekst stanie się zbyt długi dla swojego pola.Wrap Text
Jeśli chcesz, aby tekst w kształcie zawijał się wewnątrz tego kształtu, gdy przekroczy jego granicę (tylko szerokość), musisz użyć parametru Wrap text in shape. Aby określić to ustawienie, użyj metody setWrapText (z klasy TextFrameFormat) z wartością NullableBool.True_.
Ten kod w języku Python pokazuje, jak używać ustawienia Wrap Text w prezentacji PowerPoint:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType, Portion, FillType, NullableBool, SaveFormat
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
auto_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100)
portion = Portion("lorem ipsum...")
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
auto_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion)
text_frame_format = auto_shape.getTextFrame().getTextFrameFormat()
text_frame_format.setWrapText(NullableBool.True_)
presentation.save("Output-presentation.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Warning
Jeśli użyjesz metody setWrapText z wartością NullableBool.False dla kształtu, gdy tekst wewnątrz kształtu stanie się dłuższy niż szerokość kształtu, tekst wyjdzie poza jego granice w jednej linii.FAQ
Czy wewnętrzne marginesy ramki tekstu wpływają na AutoFit?
Tak. Padding (wewnętrzne marginesy) zmniejsza dostępną przestrzeń dla tekstu, więc AutoFit uruchomi się wcześniej — zmniejszając czcionkę lub zmieniając rozmiar kształtu szybciej. Sprawdź i dostosuj marginesy przed regulacją AutoFit.
Jak AutoFit współdziała z ręcznymi i miękkimi podziałami wierszy?
Wymuszone podziały pozostają na miejscu, a AutoFit dostosowuje rozmiar czcionki i odstępy wokół nich. Usunięcie niepotrzebnych podziałów często zmniejsza agresywność AutoFit w zmniejszaniu tekstu.
Czy zmiana czcionki motywu lub wymuszenie podstawienia czcionki wpływa na wyniki AutoFit?
Tak. Zastąpienie czcionki inną o innych metrykach glifów zmienia szerokość/wysokość tekstu, co może zmienić ostateczny rozmiar czcionki i zawijanie wierszy. Po każdej zmianie lub podstawieniu czcionki, ponownie sprawdź slajdy.