Caja de texto
En Aspose.Slides, un cuadro de texto está representado por un AutoShape. Prácticamente cualquier forma puede contener texto, pero un cuadro de texto típico no tiene relleno ni borde y solo muestra texto.
Esta guía explica cómo agregar, acceder y eliminar cuadros de texto mediante código.
Agregar un Cuadro de Texto
Un cuadro de texto es simplemente un AutoShape sin relleno ni borde y con texto formateado. Así se crea uno:
def add_text_box():
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# Crear una forma rectangular (por defecto con relleno, borde y sin texto).
text_box = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 75, 150, 100)
# Eliminar el relleno y el borde para que parezca una caja de texto típica.
text_box.fill_format.fill_type = slides.FillType.NO_FILL
text_box.line_format.fill_format.fill_type = slides.FillType.NO_FILL
# Establecer formato de texto.
paragraph_format = text_box.text_frame.paragraphs[0].paragraph_format
paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
paragraph_format.default_portion_format.fill_format.solid_fill_color.color = drawing.Color.black
# Asignar el contenido de texto real.
text_box.text_frame.text = "Some text..."
presentation.save("text_box.pptx", slides.export.SaveFormat.PPTX)
💡 Nota: Cualquier
AutoShapeque contenga unTextFrameno vacío puede funcionar como un cuadro de texto.
Acceder a 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 verifica su texto:
def access_text_box():
with slides.Presentation("text_box.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
# Sólo AutoShapes pueden contener texto editable.
if isinstance(shape, slides.AutoShape):
if "Slide" in shape.text_frame.text:
# Hacer algo con la caja de texto coincidente.
pass
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:
def remove_text_boxes():
with slides.Presentation("text_box.pptx") as presentation:
slide = presentation.slides[0]
# Encontrar las formas a eliminar que son AutoShapes que contienen la palabra "Slide".
shapes_to_remove = [
shape for shape in slide.shapes
if isinstance(shape, slides.AutoShape) and "Slide" in shape.text_frame.text
]
# Eliminar cada forma coincidente de la diapositiva.
for shape in shapes_to_remove:
slide.shapes.remove(shape)
presentation.save("text_boxes_removed.pptx", slides.export.SaveFormat.PPTX)
💡 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.