Melhore suas Apresentações com AutoFit em Java

Introdução

Por padrão, ao adicionar uma caixa de texto, o Microsoft PowerPoint usa a configuração Resize shape to fix text para a caixa de texto—ele redimensiona automaticamente a caixa de texto para garantir que seu texto sempre caiba nela.

textbox-in-powerpoint

  • Quando o texto na caixa de texto fica mais longo ou maior, o PowerPoint aumenta automaticamente a caixa de texto—aumenta sua altura—para permitir que contenha mais texto.
  • Quando o texto na caixa de texto fica mais curto ou menor, o PowerPoint reduz automaticamente a caixa de texto—diminui sua altura—para eliminar espaço redundante.

No PowerPoint, estes são os 4 parâmetros ou opções importantes que controlam o comportamento de ajuste automático (autofit) para uma caixa de texto:

  • Do not Autofit
  • Shrink text on overflow
  • Resize shape to fit text
  • Wrap text in shape.

autofit-options-powerpoint

Aspose.Slides for Java fornece opções semelhantes—algumas propriedades da classe TextFrameFormat—que permitem controlar o comportamento de ajuste automático para caixas de texto em apresentações.

Resize a Shape to Fit Text

Se você quer que o texto em uma caixa sempre caiba nessa caixa depois de alterações no texto, você deve usar a opção Resize shape to fix text. Para especificar essa configuração, defina a propriedade AutofitType (da classe TextFrameFormat) para Shape.

alwaysfit-setting-powerpoint

Este código Java mostra como especificar que um texto deve sempre caber em sua caixa em uma apresentação PowerPoint:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100);

    Portion portion = new Portion("lorem ipsum...");
    portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
    portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
    autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion);

    ITextFrameFormat textFrameFormat = autoShape.getTextFrame().getTextFrameFormat();
    textFrameFormat.setAutofitType(TextAutofitType.Shape);

    pres.save("Output-presentation.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Se o texto ficar mais longo ou maior, a caixa de texto será redimensionada automaticamente (aumentando a altura) para garantir que todo o texto caiba nela. Se o texto ficar mais curto, ocorre o inverso.

Do Not Autofit

Se você deseja que uma caixa de texto ou forma mantenha suas dimensões independentemente das alterações feitas no texto que contém, você deve usar a opção Do not Autofit. Para especificar essa configuração, defina a propriedade AutofitType (da classe TextFrameFormat) para None.

donotautofit-setting-powerpoint

Este código Java mostra como especificar que uma caixa de texto deve sempre manter suas dimensões em uma apresentação PowerPoint:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100);
	
    Portion portion = new Portion("lorem ipsum...");
    portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
    portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
    autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion);
	
    ITextFrameFormat textFrameFormat = autoShape.getTextFrame().getTextFrameFormat();
    textFrameFormat.setAutofitType(TextAutofitType.None);
	
    pres.save("Output-presentation.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Quando o texto fica muito longo para sua caixa, ele transborda.

Shrink Text on Overflow

Se um texto ficar muito longo para sua caixa, com a opção Shrink text on overflow, você pode especificar que o tamanho e o espaçamento do texto devem ser reduzidos para que caiba na caixa. Para especificar essa configuração, defina a propriedade AutofitType (da classe TextFrameFormat) para Normal.

shrinktextonoverflow-setting-powerpoint

Este código Java mostra como especificar que um texto deve ser reduzido no transbordamento em uma apresentação PowerPoint:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100);
	
    Portion portion = new Portion("lorem ipsum...");
    portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
    portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
    autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion);
	
    ITextFrameFormat textFrameFormat = autoShape.getTextFrame().getTextFrameFormat();
    textFrameFormat.setAutofitType(TextAutofitType.Normal);
	
    pres.save("Output-presentation.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Wrap Text

Se você deseja que o texto em uma forma seja quebrado dentro dessa forma quando o texto ultrapassa a borda da forma (apenas a largura), você deve usar o parâmetro Wrap text in shape. Para especificar essa configuração, defina a propriedade WrapText (da classe TextFrameFormat) como true.

Este código Java mostra como usar a configuração Wrap Text em uma apresentação PowerPoint:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100);

    Portion portion = new Portion("lorem ipsum...");
    portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
    portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
    autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion);

    ITextFrameFormat textFrameFormat = autoShape.getTextFrame().getTextFrameFormat();
    textFrameFormat.setWrapText(NullableBool.True);

    pres.save("Output-presentation.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

FAQ

As margens internas do quadro de texto afetam o AutoFit?

Sim. O preenchimento (margens internas) reduz a área utilizável para o texto, portanto o AutoFit será acionado mais cedo—diminuindo a fonte ou redimensionando a forma mais rapidamente. Verifique e ajuste as margens antes de afinar o AutoFit.

Como o AutoFit interage com quebras de linha manuais e suaves?

Quebras forçadas permanecem no lugar, e o AutoFit adapta o tamanho da fonte e o espaçamento em torno delas. Remover quebras desnecessárias costuma reduzir a agressividade com que o AutoFit precisa encolher o texto.

Alterar a fonte do tema ou acionar a substituição de fonte afeta os resultados do AutoFit?

Sim. Substituir por uma fonte com métricas de glifos diferentes altera a largura/altura do texto, o que pode mudar o tamanho final da fonte e a quebra de linha. Após qualquer mudança ou substituição de fonte, verifique novamente os slides.