Vylepšete své prezentace pomocí AutoFit v Pythonu
Úvod
Ve výchozím nastavení, když přidáte textové pole, Microsoft PowerPoint používá nastavení Resize shape to fit text – automaticky mění velikost textového pole, aby se do něj vždy vešly jeho texty.

- Když se text v textovém poli prodlouží nebo zvětší, PowerPoint automaticky rozšíří výšku textového pole, aby mohl pojmout více textu.
- Když se text v textovém poli zkrátí nebo zmenší, PowerPoint automaticky sníží výšku textového pole a odstraní přebytečný prostor.
V PowerPointu jsou 4 důležité parametry nebo možnosti, které řídí chování autofitu pro textové pole:
- Do not Autofit
- Shrink text on overflow
- Resize shape to fit text
- Wrap text in shape.

Aspose.Slides for Python via Java poskytuje podobné možnosti – některé vlastnosti ve třídě TextFrameFormat – které vám umožní řídit chování autofitu pro textová pole v prezentacích.
Resize a Shape to Fit Text
Pokud chcete, aby text v rámečku vždy pasoval do tohoto rámečku po změně textu, musíte použít možnost Resize shape to fit text. K nastavení této volby použijte metodu setAutofitType (třídy TextFrameFormat) s hodnotou Shape.

Tento kód v Pythonu ukazuje, jak nastavit, aby text vždy pasoval do svého rámečku v prezentaci 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()
Pokud se text prodlouží nebo zvětší, textové pole bude automaticky změněno (zvýší se výška), aby se do něj veškerý text vešel. Pokud se text zkrátí, nastane opačný efekt.
Do Not Autofit
Pokud chcete, aby textové pole nebo tvar zachovalo své rozměry bez ohledu na změny textu, musíte použít možnost Do not Autofit. K nastavení této volby použijte metodu setAutofitType (třídy TextFrameFormat) s hodnotou None.

Tento kód v Pythonu ukazuje, jak nastavit, aby textové pole vždy zachovávalo své rozměry v prezentaci 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()
Když se text stane příliš dlouhým pro své pole, přetéká ven.
Shrink Text on Overflow
Pokud se text stane příliš dlouhým pro své pole, můžete použít možnost Shrink text on overflow, která určuje, že velikost a rozestupy textu se zmenší, aby se vešel do pole. K nastavení této volby použijte metodu setAutofitType (třídy TextFrameFormat) s hodnotou Normal.

Tento kód v Pythonu ukazuje, jak nastavit, aby se text při přetečení zmenšil v prezentaci 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
Když je použita možnost Shrink text on overflow, nastavení se aplikuje pouze tehdy, když se text stane příliš dlouhým pro své pole.Wrap Text
Pokud chcete, aby se text v tvaru zalamoval uvnitř tohoto tvaru, když text přesáhne jeho šířku, musíte použít parametr Wrap text in shape. K nastavení této volby použijte metodu setWrapText (třídy TextFrameFormat) s hodnotou NullableBool.True_.
Tento kód v Pythonu ukazuje, jak použít nastavení Wrap Text v prezentaci 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
Pokud použijete metodu setWrapText s hodnotou NullableBool.False pro tvar, když se text uvnitř tvaru prodlouží přes šířku tvaru, text bude pokračovat mimo hranice tvaru v jedné řádce.Často kladené otázky
Ovlivňují vnitřní okraje textového rámce AutoFit?
Ano. Okraje (vnitřní odsazení) snižují použitelné místo pro text, takže AutoFit se aktivuje dříve – zmenšuje písmo nebo dříve mění velikost tvaru. Před laděním AutoFit zkontrolujte a upravte okraje.
Jak AutoFit spolupracuje s ručně vloženými a měkkými konci řádků?
Vynucené zalomení zůstává zachováno a AutoFit přizpůsobuje velikost písma a rozestupy kolem nich. Odstranění zbytečných zalomení často snižuje agresivitu, s níž AutoFit zmenšuje text.
Mění změna tématu písma nebo vyvolání substituce písma výsledek AutoFit?
Ano. Nahrazení písma jiným s odlišnými metrikami znaků mění šířku/výšku textu, což může změnit konečnou velikost písma a zalamování řádků. Po jakékoli změně či substituci písma znovu zkontrolujte snímky.