Gestionar TextBox

Los textos en las diapositivas normalmente existen en cuadros de texto o formas. Por lo tanto, para agregar un texto a una diapositiva, debes agregar un cuadro de texto y luego colocar algo de texto dentro del cuadro de texto. Aspose.Slides para Android a través de Java proporciona la interfaz IAutoShape que te permite agregar una forma que contenga algo de texto.

Crear Cuadro de Texto en la Diapositiva

Para crear un cuadro de texto en una diapositiva, sigue estos pasos:

  1. Crea una instancia de la clase Presentation.
  2. Obtén una referencia de la primera diapositiva en la presentación recién creada.
  3. Agrega un objeto IAutoShape con ShapeType configurado como Rectangle en una posición específica de la diapositiva y obtén la referencia del objeto IAutoShape recién agregado.
  4. Agrega una propiedad TextFrame al objeto IAutoShape que contendrá un texto. En el ejemplo a continuación, agregamos este texto: Aspose TextBox
  5. Finalmente, escribe el archivo PPTX a través del objeto Presentation.

Este código Java—una implementación de los pasos anteriores—te muestra cómo agregar texto a una diapositiva:

// Instancia Presentation
Presentation pres = new Presentation();
try {
    // Obtiene la primera diapositiva en la presentación
    ISlide sld = pres.getSlides().get_Item(0);

    // Agrega un AutoShape con tipo configurado como Rectangle
    IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 150, 50);

    // Agrega TextFrame al Rectangle
    ashp.addTextFrame(" ");

    // Accede al marco de texto
    ITextFrame txtFrame = ashp.getTextFrame();

    // Crea el objeto Paragraph para el marco de texto
    IParagraph para = txtFrame.getParagraphs().get_Item(0);

    // Crea un objeto Portion para el párrafo
    IPortion portion = para.getPortions().get_Item(0);

    // Establece el Texto
    portion.setText("Aspose TextBox");

    // Guarda la presentación en disco
    pres.save("TextBox_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Verificar si es Forma de Texto

Aspose.Slides proporciona la propiedad isTextBox() (de la clase AutoShape) para permitirte examinar formas y encontrar cuadros de texto.

Cuadro de texto y forma

Este código Java te muestra cómo verificar si una forma fue creada como un cuadro de texto:

Presentation pres = new Presentation("pres.pptx");
try {
    ForEach.shape(pres, (shape, slide, index) ->
    {
        if (shape instanceof AutoShape)
        {
            AutoShape autoShape = (AutoShape)shape;
            System.out.println(autoShape.isTextBox() ? "la forma es cuadro de texto" : "la forma no es cuadro de texto");
        }
    });
} finally {
    if (pres != null) pres.dispose();
}

Agregar Columna en Cuadro de Texto

Aspose.Slides proporciona las propiedades ColumnCount y ColumnSpacing (de la interfaz ITextFrameFormat y la clase TextFrameFormat) que te permiten agregar columnas a los cuadros de texto. Puedes especificar el número de columnas en un cuadro de texto y establecer la cantidad de espacio en puntos entre columnas.

Este código en Java demuestra la operación descrita:

Presentation pres = new Presentation();
try {
    // Obtiene la primera diapositiva en la presentación
    ISlide slide = pres.getSlides().get_Item(0);

    // Agrega un AutoShape con tipo configurado como Rectangle
    IAutoShape aShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);

    // Agrega TextFrame al Rectangle
    aShape.addTextFrame("Todas estas columnas están limitadas a estar dentro de un solo contenedor de texto -- " +
            "puedes agregar o eliminar texto y el nuevo o texto restante se ajusta automáticamente " +
            "para fluir dentro del contenedor. No puedes hacer que el texto fluya de un contenedor " +
            "a otro, sin embargo -- te dijimos que las opciones de columna de PowerPoint para texto son limitadas!");

    // Obtiene el formato de texto de TextFrame
    ITextFrameFormat format = aShape.getTextFrame().getTextFrameFormat();

    // Especifica el número de columnas en TextFrame
    format.setColumnCount(3);

    // Especifica el espaciado entre columnas
    format.setColumnSpacing(10);

    // Guarda la presentación
    pres.save("ColumnCount.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Agregar Columna en Marco de Texto

Aspose.Slides para Android a través de Java proporciona la propiedad ColumnCount (de la interfaz ITextFrameFormat) que te permite agregar columnas en marcos de texto. A través de esta propiedad, puedes especificar tu número preferido de columnas en un marco de texto.

Este código Java te muestra cómo agregar una columna dentro de un marco de texto:

String outPptxFileName = "ColumnsTest.pptx";
Presentation pres = new Presentation();
try {
    IAutoShape shape1 = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
    TextFrameFormat format = (TextFrameFormat)shape1.getTextFrame().getTextFrameFormat();

    format.setColumnCount(2);
    shape1.getTextFrame().setText("Todas estas columnas están obligadas a permanecer dentro de un solo contenedor de texto -- " +
            "puedes agregar o eliminar texto - y el nuevo o texto restante se ajusta automáticamente " +
            "para permanecer dentro del contenedor. No puedes hacer que el texto se derrame de un contenedor " +
            "a otro, sin embargo -- porque las opciones de columna de PowerPoint para texto son limitadas!");
    pres.save(outPptxFileName, SaveFormat.Pptx);

    Presentation test = new Presentation(outPptxFileName);
    try {
        IAutoShape autoShape = ((AutoShape)test.getSlides().get_Item(0).getShapes().get_Item(0));
        Assert.assertTrue(2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
        Assert.assertTrue(Double.NaN == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
    } finally {
        if (test != null) test.dispose();
    }

    format.setColumnSpacing(20);
    pres.save(outPptxFileName, SaveFormat.Pptx);

    Presentation test1 = new Presentation(outPptxFileName);
    try {
        IAutoShape autoShape = ((AutoShape)test1.getSlides().get_Item(0).getShapes().get_Item(0));
        Assert.assertTrue(2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
        Assert.assertTrue(20 == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
    } finally {
        if (test1 != null) test1.dispose();
    }

    format.setColumnCount(3);
    format.setColumnSpacing(15);
    pres.save(outPptxFileName, SaveFormat.Pptx);

    Presentation test2 = new Presentation(outPptxFileName);
    try {
        IAutoShape autoShape = ((AutoShape)test2.getSlides().get_Item(0).getShapes().get_Item(0));
        Assert.assertTrue(3 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
        Assert.assertTrue(15 == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
    } finally {
        if (test2 != null) test2.dispose();
    }
} finally {
    if (pres != null) pres.dispose();
}

Actualizar Texto

Aspose.Slides te permite cambiar o actualizar el texto contenido en un cuadro de texto o todos los textos contenidos en una presentación.

Este código Java demuestra una operación donde se actualizan o cambian todos los textos en una presentación:

Presentation pres = new Presentation("text.pptx");
try {
    for (ISlide slide : pres.getSlides())
    {
        for (IShape shape : slide.getShapes())
        {
            if (shape instanceof IAutoShape) //Verifica si la forma admite marco de texto (IAutoShape). 
            {
                IAutoShape autoShape = (IAutoShape)shape; 
                for (IParagraph paragraph : autoShape.getTextFrame().getParagraphs()) //Itera a través de los párrafos en el marco de texto
                {
                    for (IPortion portion : paragraph.getPortions()) //Itera a través de cada porción en el párrafo
                    {
                        portion.setText(portion.getText().replace("years", "months")); //Cambia el texto
                        portion.getPortionFormat().setFontBold(NullableBool.True); //Cambia el formato
                    }
                }
            }
        }
    }

    //Guarda la presentación modificada
    pres.save("text-changed.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Agregar Cuadro de Texto con Hipervínculo

Puedes insertar un enlace dentro de un cuadro de texto. Cuando se hace clic en el cuadro de texto, se redirige a los usuarios para abrir el enlace.

Para agregar un cuadro de texto que contenga un enlace, sigue estos pasos:

  1. Crea una instancia de la clase Presentation.
  2. Obtén una referencia de la primera diapositiva en la presentación recién creada.
  3. Agrega un objeto AutoShape con ShapeType configurado como Rectangle en una posición específica de la diapositiva y obtén una referencia del objeto AutoShape recién agregado.
  4. Agrega un TextFrame al objeto AutoShape que contenga Aspose TextBox como su texto predeterminado.
  5. Instancia la clase IHyperlinkManager.
  6. Asigna el objeto IHyperlinkManager a la propiedad HyperlinkClick asociada con tu porción preferida del TextFrame.
  7. Finalmente, escribe el archivo PPTX a través del objeto Presentation.

Este código Java—una implementación de los pasos anteriores—te muestra cómo agregar un cuadro de texto con un hipervínculo a una diapositiva:

// Instancia una clase Presentation que representa un PPTX
Presentation pres = new Presentation();
try {
    // Obtiene la primera diapositiva en la presentación
    ISlide slide = pres.getSlides().get_Item(0);

    // Agrega un objeto AutoShape con tipo configurado como Rectangle
    IShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 150, 50);

    // Convierte la forma a AutoShape
    IAutoShape pptxAutoShape = (IAutoShape)shape;

    // Accede a la propiedad ITextFrame asociada con el AutoShape
    pptxAutoShape.addTextFrame("");

    ITextFrame textFrame = pptxAutoShape.getTextFrame();

    // Agrega algún texto al marco
    textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).setText("Aspose.Slides");

    // Establece el hipervínculo para el texto de la porción
    IHyperlinkManager hyperlinkManager = textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).
            getPortionFormat().getHyperlinkManager();
    hyperlinkManager.setExternalHyperlinkClick("http://www.aspose.com");

    // Guarda la presentación PPTX
    pres.save("hLink_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}