Administrar cuadros de texto en presentaciones con Python
Resumen
Los textos en las diapositivas normalmente se encuentran en cuadros de texto o formas. Por lo tanto, para agregar texto a una diapositiva, debe agregar un cuadro de texto y luego colocar algo de texto dentro del cuadro. Aspose.Slides for Python proporciona la clase AutoShape que permite agregar una forma que contiene texto.
Info
Aspose.Slides también proporciona la clase Shape. Sin embargo, no todas las formas pueden contener texto.Note
Por lo tanto, al trabajar con una forma a la que desea agregar texto, es posible que desee comprobar y confirmar que se ha convertido mediante la clase AutoShape. Sólo entonces podrá trabajar con TextFrame, que es una propiedad de AutoShape. Consulte la sección Update Text en esta página.Crear cuadros de texto en diapositivas
Para crear un cuadro de texto en una diapositiva:
- Cree una instancia de la clase Presentation.
- Obtenga una referencia a la primera diapositiva.
- Agregue un AutoShape con
ShapeType.RECTANGLEen la posición deseada de la diapositiva. - Establezca el texto en el TextFrame de la forma.
- Guarde la presentación como un archivo PPTX.
El siguiente ejemplo de Python implementa estos pasos:
import aspose.slides as slides
# Instanciar la clase Presentation.
with slides.Presentation() as presentation:
# Obtener la primera diapositiva de la presentación.
slide = presentation.slides[0]
# Añadir un AutoShape del tipo RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)
shape.text_frame.text = "Aspose TextBox"
# Guardar la presentación en disco.
presentation.save("TextBox.pptx", slides.export.SaveFormat.PPTX)
Comprobar si una forma es un cuadro de texto
Aspose.Slides proporciona la propiedad is_text_box en la clase AutoShape, que le permite determinar si una forma es un cuadro de texto.

Este ejemplo de Python muestra cómo comprobar si una forma se creó como un cuadro de texto:
import aspose.slides as slides
with slides.Presentation("Sample.pptx") as presentation:
for slide in presentation.slides:
for shape in slide.shapes:
if isinstance(shape, slides.AutoShape):
print("shape is a text box" if shape.is_text_box else "shape is not a text box")
Observe que si agrega un AutoShape utilizando la clase ShapeCollection, la propiedad is_text_box de la forma devuelve False. Sin embargo, después de agregar texto—ya sea con el método add_text_frame o estableciendo la propiedad text—is_text_box devuelve True.
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape1 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 10, 100, 40)
# shape1.is_text_box es falso
shape1.add_text_frame("shape 1")
# shape1.is_text_box es verdadero
shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 110, 100, 40)
# shape2.is_text_box es falso
shape2.text_frame.text = "shape 2"
# shape2.is_text_box es verdadero
shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 210, 100, 40)
# shape3.is_text_box es falso
shape3.add_text_frame("")
# shape3.is_text_box es falso
shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 100, 40)
# shape4.is_text_box es falso
shape4.text_frame.text = ""
# shape4.is_text_box es falso
Agregar columnas a cuadros de texto
Aspose.Slides proporciona las propiedades column_count y column_spacing en la clase TextFrameFormat para agregar columnas a los cuadros de texto. Puede especificar el número de columnas y establecer el espaciado (en puntos) entre columnas.
El siguiente código Python demuestra esta operación:
import aspose.slides as slides
with slides.Presentation() as presentation:
# Obtenga la primera diapositiva de la presentación.
slide = presentation.slides[0]
# Agregue un AutoShape de tipo RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
# Agregue un TextFrame al rectángulo.
shape.add_text_frame("All of these columns are confined to a single text container—" +
"you can add or delete text, and any new or remaining text automatically reflows " +
"within the container. You cannot have text flow from one container to another, " +
"though—PowerPoint’s column options for text are limited!")
# Obtenga el formato de texto del TextFrame.
format = shape.text_frame.text_frame_format
# Especifique el número de columnas en el TextFrame.
format.column_count = 3
# Especifique el espaciado entre columnas.
format.column_spacing = 10
# Guarde la presentación.
presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)
Actualizar texto
Aspose.Slides le permite actualizar el texto en un solo cuadro de texto o en toda la presentación.
El siguiente ejemplo de Python muestra cómo actualizar todo el texto en una presentación:
import aspose.slides as slides
with slides.Presentation("Sample.pptx") as presentation:
for slide in presentation.slides:
for shape in slide.shapes:
if type(shape) is slides.AutoShape:
for paragraph in shape.text_frame.paragraphs:
for portion in paragraph.portions:
portion.text = portion.text.replace("years", "months")
portion.portion_format.font_bold = 1
# Guardar la presentación modificada.
presentation.save("TextChanged.pptx", slides.export.SaveFormat.PPTX)
Agregar cuadros de texto con hipervínculos
Puede insertar un enlace en un cuadro de texto. Cuando se hace clic en el cuadro de texto, el enlace se abre.
Para agregar un cuadro de texto que contenga un hipervínculo, siga estos pasos:
- Cree una instancia de la clase Presentation.
- Obtenga una referencia a la primera diapositiva.
- Agregue un AutoShape con
ShapeType.RECTANGLEen la posición deseada de la diapositiva. - Establezca el texto en el TextFrame.
- Obtenga una referencia al HyperlinkManager.
- Utilice la propiedad
hyperlink_managerpara establecer un hipervínculo externo al hacer clic. - Guarde la presentación como un archivo PPTX.
Este ejemplo de Python muestra cómo agregar un cuadro de texto con un hipervínculo a una diapositiva:
import aspose.slides as slides
# Instanciar la clase Presentation.
with slides.Presentation() as presentation:
# Obtener la primera diapositiva de la presentación.
slide = presentation.slides[0]
# Agregar un AutoShape de tipo RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)
text_portion = shape.text_frame.paragraphs[0].portions[0]
# Agregar texto al marco.
text_portion.text = "Aspose.Slides"
# Establecer un hipervínculo para el texto de la porción.
hyperlink_manager = text_portion.portion_format.hyperlink_manager
hyperlink_manager.set_external_hyperlink_click("http://www.aspose.com")
# Guardar la presentación como un archivo PPTX.
presentation.save("Hyperlink.pptx", slides.export.SaveFormat.PPTX)
Preguntas frecuentes
¿Cuál es la diferencia entre un cuadro de texto y un marcador de posición de texto al trabajar con diapositivas maestras?
Un placeholder hereda el estilo/posición de la master y puede ser sobrescrito en los layouts, mientras que un cuadro de texto regular es un objeto independiente en una diapositiva específica y no cambia al cambiar de diseño.
¿Cómo puedo realizar un reemplazo masivo de texto en toda la presentación sin tocar el texto dentro de gráficos, tablas y SmartArt?
Limite su iteración a auto‑formas que tengan marcos de texto y excluya los objetos incrustados (charts, tables, SmartArt) recorriéndolos por separado o omitiendo esos tipos de objetos.