Cuadro de texto
En Aspose.Slides, un cuadro de texto está representado por un AutoShape. Casi cualquier forma puede contener texto, pero un cuadro de texto típico no tiene relleno ni borde y sólo muestra texto.
Esta guía explica cómo añadir, acceder y eliminar cuadros de texto mediante código.
Añadir un cuadro de texto
Un cuadro de texto es simplemente un AutoShape sin relleno ni borde y con algo de texto formateado. Así se crea uno:
public static void addTextBox() {
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Crear una forma rectangular (por defecto con relleno y borde y sin texto).
IAutoShape textBox = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 75, 150, 100);
// Eliminar el relleno y el borde para que parezca un cuadro de texto típico.
textBox.getFillFormat().setFillType(FillType.NoFill);
textBox.getLineFormat().getFillFormat().setFillType(FillType.NoFill);
// Establecer el formato del texto.
IParagraph paragraph = textBox.getTextFrame().getParagraphs().get_Item(0);
IPortionFormat textFormat = paragraph.getParagraphFormat().getDefaultPortionFormat();
textFormat.getFillFormat().setFillType(FillType.Solid);
textFormat.getFillFormat().getSolidFillColor().setColor(Color.BLACK);
// Asignar el contenido real del texto.
textBox.getTextFrame().setText("Some text...");
} finally {
presentation.dispose();
}
}
💡 Nota: Cualquier
AutoShapeque contenga unTextFrameno vacío puede funcionar como un cuadro de texto.
Acceder a los cuadros de texto por contenido
Para encontrar todos los cuadros de texto que contengan una palabra clave específica (p. ej. “Slide”), recorre las formas y comprueba su texto:
public static void accessTextBox() {
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
for (IShape shape : slide.getShapes()) {
// Sólo los AutoShapes pueden contener texto editable.
if (shape instanceof IAutoShape) {
IAutoShape autoShape = (IAutoShape) shape;
if (autoShape.getTextFrame().getText().contains("Slide")) {
// Haz algo con el cuadro de texto coincidente.
}
}
}
} finally {
presentation.dispose();
}
}
Eliminar cuadros de texto por contenido
Este ejemplo encuentra y elimina todos los cuadros de texto en la primera diapositiva que contienen una palabra clave específica:
public static void removeTextBox() {
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
List<IShape> shapesToRemove = new ArrayList<IShape>();
for (IShape shape : slide.getShapes()) {
if (shape instanceof IAutoShape) {
IAutoShape autoShape = (IAutoShape) shape;
if (autoShape.getTextFrame().getText().contains("Slide")) {
shapesToRemove.add(shape);
}
}
}
for (IShape shape : shapesToRemove) {
slide.getShapes().remove(shape);
}
} finally {
presentation.dispose();
}
}
💡 Consejo: Siempre crea una copia de la colección de formas antes de modificarla durante la iteración para evitar errores de modificación de la colección.