Mejore sus presentaciones con AutoFit en Android

Por defecto, cuando añades un cuadro de texto, Microsoft PowerPoint utiliza la configuración Resize shape to fix text para el cuadro de texto: redimensiona automáticamente el cuadro de texto para garantizar que su texto siempre quepa en él.

textbox-in-powerpoint

  • Cuando el texto del cuadro de texto se vuelve más largo o más grande, PowerPoint amplía automáticamente el cuadro de texto—incrementa su altura—para permitir que contenga más texto.
  • Cuando el texto del cuadro de texto se vuelve más corto o más pequeño, PowerPoint reduce automáticamente el cuadro de texto—disminuye su altura—para eliminar el espacio redundante.

En PowerPoint, estos son los 4 parámetros u opciones importantes que controlan el comportamiento de autofit para un cuadro de texto:

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

autofit-options-powerpoint

Aspose.Slides for Android a través de Java ofrece opciones similares—algunas propiedades de la clase TextFrameFormat—que le permiten controlar el comportamiento de autofit para los cuadros de texto en presentaciones.

Redimensionar una forma para ajustar el texto

Si desea que el texto dentro de un cuadro siempre quepa en ese cuadro después de realizar cambios en el texto, debe usar la opción Resize shape to fix text. Para especificar esta configuración, establezca la propiedad AutofitType (de la clase TextFrameFormat) a Shape.

alwaysfit-setting-powerpoint

Este código Java le muestra cómo especificar que un texto debe ajustarse siempre a su cuadro en una presentación de 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();
}

Si el texto se vuelve más largo o más grande, el cuadro de texto se redimensionará automáticamente (aumento de altura) para garantizar que todo el texto quepa en él. Si el texto se vuelve más corto, ocurre lo contrario.

No autofit

Si desea que un cuadro de texto o una forma mantenga sus dimensiones sin importar los cambios realizados en el texto que contiene, debe usar la opción Do not Autofit. Para especificar esta configuración, establezca la propiedad AutofitType (de la clase TextFrameFormat) a None.

donotautofit-setting-powerpoint

Este código Java le muestra cómo especificar que un cuadro de texto debe conservar siempre sus dimensiones en una presentación de 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();
}

Cuando el texto se vuelve demasiado largo para su cuadro, se desborda.

Reducir texto al desbordarse

Si un texto se vuelve demasiado largo para su cuadro, mediante la opción Shrink text on overflow puede especificar que el tamaño y el espaciado del texto se reduzcan para que quepa en su cuadro. Para especificar esta configuración, establezca la propiedad AutofitType (de la clase TextFrameFormat) a Normal.

shrinktextonoverflow-setting-powerpoint

Este código Java le muestra cómo especificar que un texto debe reducirse al desbordarse en una presentación de 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();
}

Ajustar texto

Si desea que el texto en una forma se ajuste dentro de esa forma cuando el texto supera el borde de la forma (solo ancho), debe usar el parámetro Wrap text in shape. Para especificar esta configuración, debe establecer la propiedad WrapText (de la clase TextFrameFormat) a true.

Este código Java le muestra cómo usar la configuración Wrap Text en una presentación de 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();
}

Preguntas frecuentes

¿Los márgenes internos del marco de texto afectan a AutoFit?
Sí. El relleno (márgenes internos) reduce el área utilizable para el texto, por lo que AutoFit se activa antes—reduciendo la fuente o redimensionando la forma más pronto. Verifique y ajuste los márgenes antes de afinar AutoFit.

¿Cómo interactúa AutoFit con los saltos de línea manuales y suaves?
Los saltos forzados permanecen, y AutoFit adapta el tamaño de la fuente y el espaciado a su alrededor. Eliminar saltos innecesarios suele reducir la agresividad con la que AutoFit necesita encoger el texto.

¿Cambiar la fuente del tema o activar la sustitución de fuentes afecta los resultados de AutoFit?
Sí. Sustituir a una fuente con métricas de glifo diferentes cambia el ancho/alto del texto, lo que puede alterar el tamaño final de la fuente y el ajuste de línea. Después de cualquier cambio o sustitución de fuente, vuelva a comprobar las diapositivas.