Gestionar TextBox
Los textos en las diapositivas generalmente existen en cuadros de texto o formas. Por lo tanto, para agregar texto a una diapositiva, primero debes agregar un textbox y luego poner algún texto dentro del textbox.
Para permitirte agregar una forma que pueda contener texto, Aspose.Slides para .NET proporciona la interfaz IAutoShape.
Nota
Aspose.Slides también proporciona la interfaz IShape para permitirte agregar formas a las diapositivas. Sin embargo, no todas las formas añadidas a través de la interfaz IShape
pueden contener texto. Las formas añadidas a través de la interfaz IAutoShape generalmente contienen texto.
Por lo tanto, al tratar con una forma existente a la que deseas agregar texto, es posible que desees verificar y confirmar que fue convertida a través de la interfaz IAutoShape
. Solo entonces podrás trabajar con TextFrame, que es una propiedad bajo IAutoShape
. Consulta la sección Actualizar Texto en esta página.
Crear Cuadro de Texto en Diapositiva
- Crea una instancia de la clase Presentation.
- Obtén la referencia de la primera diapositiva a través de su índice.
- Agrega un objeto IAutoShape con ShapeType configurado como
Rectangle
en una posición especificada en la diapositiva y obtén la referencia del objetoIAutoShape
recién agregado. - Agrega una propiedad
TextFrame
al objetoIAutoShape
que contendrá un texto. En el ejemplo a continuación, agregamos este texto: Aspose TextBox - Finalmente, escribe el archivo PPTX a través del objeto
Presentation
.
Este código C#—una implementación de los pasos anteriores—te muestra cómo agregar texto a una diapositiva:
// Instancia PresentationEx
using (Presentation pres = new Presentation())
{
// Obtiene la primera diapositiva en la presentación
ISlide sld = pres.Slides[0];
// Agrega un AutoShape con el tipo configurado como Rectangle
IAutoShape ashp = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 150, 75, 150, 50);
// Agrega TextFrame al Rectangle
ashp.AddTextFrame(" ");
// Accede al marco de texto
ITextFrame txtFrame = ashp.TextFrame;
// Crea el objeto Paragraph para el marco de texto
IParagraph para = txtFrame.Paragraphs[0];
// Crea un objeto Portion para el párrafo
IPortion portion = para.Portions[0];
// Establece el texto
portion.Text = "Aspose TextBox";
// Guarda la presentación en disco
pres.Save("TextBox_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
Verificar Forma de Cuadro de Texto
Aspose.Slides proporciona la propiedad IsTextBox (de la clase AutoShape) para permitirte examinar formas y encontrar cuadros de texto.
Este código C# te muestra cómo verificar si una forma fue creada como un cuadro de texto:
using (Presentation pres = new Presentation("pres.pptx"))
{
Aspose.Slides.LowCode.ForEach.Shape(pres, (shape, slide, index) =>
{
if (shape is AutoShape autoShape)
{
Console.WriteLine(autoShape.IsTextBox ? "la forma es un cuadro de texto" : "la forma es un texto no cuadro");
}
});
}
Agregar Columna en Cuadro de Texto
Aspose.Slides proporciona las propiedades ColumnCount y ColumnSpacing (de la interfaz ITextFrameFormat y la clase TextFrameFormat) para permitirte agregar columnas a los cuadros de texto. Puedes especificar el número de columnas en un cuadro de texto y luego especificar el espaciado en puntos entre columnas.
Este código en C# demuestra la operación descrita:
using (Presentation presentation = new Presentation())
{
// Obtiene la primera diapositiva en la presentación
ISlide slide = presentation.Slides[0];
// Agrega un AutoShape con el tipo configurado como Rectangle
IAutoShape aShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
// Agrega TextFrame al Rectangle
aShape.AddTextFrame("Todas estas columnas están limitadas a estar dentro de un único contenedor de texto -- " +
"puedes agregar o eliminar texto y el nuevo o restante texto 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 columnas de PowerPoint para texto son limitadas!");
// Obtiene el formato de texto de TextFrame
ITextFrameFormat format = aShape.TextFrame.TextFrameFormat;
// Especifica el número de columnas en TextFrame
format.ColumnCount = 3;
// Especifica el espaciado entre columnas
format.ColumnSpacing = 10;
// Guarda la presentación
presentation.Save("ColumnCount.pptx", SaveFormat.Pptx);
}
Agregar Columna en Marco de Texto
Aspose.Slides para .NET proporciona la propiedad ColumnCount (de la interfaz ITextFrameFormat) que 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 C# te muestra cómo agregar una columna dentro de un marco de texto:
string outPptxFileName = "ColumnsTest.pptx";
using (Presentation pres = new Presentation())
{
IAutoShape shape1 = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
TextFrameFormat format = (TextFrameFormat)shape1.TextFrame.TextFrameFormat;
format.ColumnCount = 2;
shape1.TextFrame.Text = "Todas estas columnas están forzadas a permanecer dentro de un único contenedor de texto -- " +
"puedes agregar o eliminar texto - y el nuevo o restante texto 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 columnas de PowerPoint para texto son limitadas!";
pres.Save(outPptxFileName, SaveFormat.Pptx);
using (Presentation test = new Presentation(outPptxFileName))
{
Debug.Assert(2 == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnCount);
Debug.Assert(double.NaN == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnSpacing);
}
format.ColumnSpacing = 20;
pres.Save(outPptxFileName, SaveFormat.Pptx);
using (Presentation test = new Presentation(outPptxFileName))
{
Debug.Assert(2 == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnCount);
Debug.Assert(20 == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnSpacing);
}
format.ColumnCount = 3;
format.ColumnSpacing = 15;
pres.Save(outPptxFileName, SaveFormat.Pptx);
using (Presentation test = new Presentation(outPptxFileName))
{
Debug.Assert(3 == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnCount);
Debug.Assert(15 == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnSpacing);
}
}
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 C# demuestra una operación donde todos los textos en una presentación son actualizados o cambiados:
using(Presentation pres = new Presentation("text.pptx"))
{
foreach (ISlide slide in pres.Slides)
{
foreach (IShape shape in slide.Shapes)
{
if (shape is IAutoShape autoShape) //Verifica si la forma admite el marco de texto (IAutoShape).
{
foreach (IParagraph paragraph in autoShape.TextFrame.Paragraphs) //Itera a través de los párrafos en el marco de texto
{
foreach (IPortion portion in paragraph.Portions) //Itera a través de cada porción en el párrafo
{
portion.Text = portion.Text.Replace("years", "months"); //Cambia el texto
portion.PortionFormat.FontBold = NullableBool.True; //Cambia el formato
}
}
}
}
}
//Guarda la presentación modificada
pres.Save("text-changed.pptx", SaveFormat.Pptx);
}
Agregar Cuadro de Texto con Hiperenlace
Puedes insertar un enlace dentro de un cuadro de texto. Cuando se hace clic en el cuadro de texto, los usuarios serán dirigidos a abrir el enlace.
- Crea una instancia de la clase
Presentation
. - Obtén la referencia de la primera diapositiva a través de su índice.
- Agrega un objeto
AutoShape
conShapeType
configurado comoRectangle
en una posición especificada en la diapositiva y obtén una referencia del objeto AutoShape recién agregado. - Agrega un
TextFrame
al objetoAutoShape
que contiene Aspose TextBox como su texto predeterminado. - Instancia la clase
IHyperlinkManager
. - Asigna el objeto
IHyperlinkManager
a la propiedad HyperlinkClick asociada con la porción preferida de tuTextFrame
. - Finalmente, escribe el archivo PPTX a través del objeto
Presentation
.
Este código C#—una implementación de los pasos anteriores—te muestra cómo agregar un cuadro de texto con un hiperenlace a una diapositiva:
// Instancia una clase Presentation que representa un PPTX
Presentation pptxPresentation = new Presentation();
// Obtiene la primera diapositiva en la presentación
ISlide slide = pptxPresentation.Slides[0];
// Agrega un objeto AutoShape con el tipo configurado como Rectangle
IShape pptxShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 150, 150, 150, 50);
// Convierte la forma a AutoShape
IAutoShape pptxAutoShape = (IAutoShape)pptxShape;
// Accede a la propiedad ITextFrame asociada con el AutoShape
pptxAutoShape.AddTextFrame("");
ITextFrame ITextFrame = pptxAutoShape.TextFrame;
// Agrega algo de texto al marco
ITextFrame.Paragraphs[0].Portions[0].Text = "Aspose.Slides";
// Establece el hiperenlace para el texto de la porción
IHyperlinkManager HypMan = ITextFrame.Paragraphs[0].Portions[0].PortionFormat.HyperlinkManager;
HypMan.SetExternalHyperlinkClick("http://www.aspose.com");
// Guarda la presentación PPTX
pptxPresentation.Save("hLinkPPTX_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);