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.

Textové pole v PowerPointu

  • 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.

Možnosti autofitu v PowerPointu

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.

vždy-pasuje-nastavení-powerpoint

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.

není-autofit-nastavení-powerpoint

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.

zmenšení-textu-při-přetečení-nastavení-powerpoint

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()

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()

Č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.