Gestionar TextBox
Los textos en las diapositivas generalmente existen en cuadros de texto o formas. Por lo tanto, para agregar un texto a una diapositiva, debes añadir un cuadro de texto y luego poner algo de texto dentro del textbox. Aspose.Slides para Python a través de .NET proporciona la interfaz IAutoShape que te permite agregar una forma que contenga algo de texto.
Info
Aspose.Slides también proporciona la interfaz IShape que te permite agregar formas a las diapositivas. Sin embargo, no todas las formas añadidas a través de la interfazIShape
pueden contener texto. Pero las formas añadidas a través de la interfaz IAutoShape pueden contener texto.
Nota
Por lo tanto, cuando trabajes con una forma a la que deseas agregar texto, puede que quieras verificar y confirmar que se haya convertido a través de la interfazIAutoShape
. Solo entonces podrás trabajar con TextFrame, que es una propiedad de IAutoShape
. Consulta la sección Actualizar Texto en esta página.
Crear Cuadro de Texto en la Diapositiva
Para crear un textbox en una diapositiva, sigue estos pasos:
- Crea una instancia de la clase Presentation.
- Obtén una referencia para la primera diapositiva en la presentación recién creada.
- Agrega un objeto IAutoShape con ShapeType establecido como
RECTANGLE
en una posición especificada en la diapositiva y obtén la referencia para el objetoIAutoShape
recién añadido. - Agrega una propiedad
text_frame
al objetoIAutoShape
que contendrá un texto. En el ejemplo a continuación, añadimos este texto: Aspose TextBox - Finalmente, escribe el archivo PPTX a través del objeto
Presentation
.
Este código en Python—una implementación de los pasos anteriores—te muestra cómo agregar texto a una diapositiva:
import aspose.slides as slides
# Instancia PresentationEx
with slides.Presentation() as pres:
# Obtiene la primera diapositiva en la presentación
sld = pres.slides[0]
# Añade una AutoShape con tipo establecido como Rectángulo
ashp = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)
# Añade TextFrame al Rectángulo
ashp.add_text_frame(" ")
# Accede al marco de texto
txtFrame = ashp.text_frame
# Crea el objeto Paragraph para el marco de texto
para = txtFrame.paragraphs[0]
# Crea un objeto Portion para el párrafo
portion = para.portions[0]
# Establece el Texto
portion.text = "Aspose TextBox"
# Guarda la presentación en disco
pres.save("TextBox_out.pptx", slides.export.SaveFormat.PPTX)
Verificar Forma de Cuadro de Texto
Aspose.Slides proporciona la propiedad is_text_box
(de la clase AutoShape) que te permite examinar formas y encontrar cuadros de texto.
Este código en Python te muestra cómo verificar si una forma fue creada como un cuadro de texto: xxx
from aspose.slides import Presentation, AutoShape
with Presentation("pres.pptx") as pres:
for slide in pres.slides:
for shape in slide.shapes:
if (type(shape) is AutoShape):
print("la forma es un cuadro de texto" if shape.is_text_box else "la forma no es un cuadro de texto")
Añadir Columna en Cuadro de Texto
Aspose.Slides proporciona las propiedades column_count y column_spacing (de la interfaz ITextFrameFormat y la clase text_frame_format) que te permiten añadir columnas a los cuadros de texto. Puedes especificar el número de columnas en un cuadro de texto y establecer la cantidad de espaciado en puntos entre las columnas.
Este código en Python demuestra la operación descrita:
import aspose.slides as slides
with slides.Presentation() as presentation:
# Obtiene la primera diapositiva en la presentación
slide = presentation.slides[0]
# Añade una AutoShape con tipo establecido como Rectángulo
aShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
# Añade un TextFrame al Rectángulo
aShape.add_text_frame("Todas estas columnas están limitadas a estar dentro de un único contenedor de texto -- " +
"puedes añadir o eliminar texto y el nuevo o restante texto se ajusta automáticamente " +
"para fluir dentro del contenedor. No puedes tener texto fluyendo de un contenedor " +
"a otro, ya que las opciones de columnas de PowerPoint para texto son limitadas.")
# Obtiene el formato de texto de TextFrame
format = aShape.text_frame.text_frame_format
# Especifica el número de columnas en TextFrame
format.column_count = 3
# Especifica el espaciado entre columnas
format.column_spacing = 10
# Guarda la presentación
presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)
Añadir Columna en Marco de Texto
Aspose.Slides para Python a través de .NET proporciona la propiedad ColumnCount (de la interfaz ITextFrameFormat) que te permite añadir 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 en Python te muestra cómo añadir una columna dentro de un marco de texto:
import aspose.slides as slides
outPptxFileName = "ColumnsTest.pptx"
with slides.Presentation() as pres:
shape1 = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
format = shape1.text_frame.text_frame_format
format.column_count = 2
shape1.text_frame.text = """Todas estas columnas están forzadas a permanecer dentro de un único contenedor de texto --
puedes añadir o eliminar texto - y el nuevo o restante texto se ajusta automáticamente
para permanecer dentro del contenedor. No puedes tener texto desbordándose de un contenedor
a otro, ya que las opciones de columnas de PowerPoint para texto son limitadas!"""
with slides.Presentation(path + outPptxFileName) as test:
print(test.slides[0].shapes[0].text_frame.text_frame_format.column_count)
print(test.slides[0].shapes[0].text_frame.text_frame_format.column_spacing)
format.column_spacing = 20
pres.save(path + outPptxFileName, slides.export.SaveFormat.PPTX)
with slides.Presentation(path + outPptxFileName) as test:
print(test.slides[0].shapes[0].text_frame.text_frame_format.column_count)
print(test.slides[0].shapes[0].text_frame.text_frame_format.column_spacing)
format.column_count = 3
format.column_spacing = 15
pres.save(path + outPptxFileName, slides.export.SaveFormat.PPTX)
with slides.Presentation(path + outPptxFileName) as test:
print(test.slides[0].shapes[0].text_frame.text_frame_format.column_count)
print(test.slides[0].shapes[0].text_frame.text_frame_format.column_spacing)
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 en Python demuestra una operación donde todos los textos en una presentación son actualizados o cambiados:
import aspose.slides as slides
with slides.Presentation("pres.pptx") as pres:
for slide in pres.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
# Guarda la presentación modificada
pres.save("text-changed.pptx", slides.export.SaveFormat.PPTX)
Añadir 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 son dirigidos a abrir el enlace.
Para añadir un cuadro de texto que contenga un enlace, sigue estos pasos:
- Crea una instancia de la clase
Presentation
. - Obtén una referencia para la primera diapositiva en la presentación recién creada.
- Añade un objeto
AutoShape
conShapeType
establecido comoRECTANGLE
en una posición especificada en la diapositiva y obtén la referencia del objeto AutoShape recién añadido. - Añade un
text_frame
al objetoAutoShape
que contenga Aspose TextBox como su texto predeterminado. - Instancia la clase
hyperlink_manager
. - Asigna el objeto
hyperlink_manager
a la propiedad HyperlinkClick asociada con tu porción preferida delTextFrame
. - Finalmente, escribe el archivo PPTX a través del objeto
Presentation
.
Este código en Python—una implementación de los pasos anteriores—te muestra cómo añadir un cuadro de texto con un hiperenlace a una diapositiva:
import aspose.slides as slides
# Instancia una clase Presentation que representa un PPTX
with slides.Presentation() as pptxPresentation:
# Obtiene la primera diapositiva en la presentación
slide = pptxPresentation.slides[0]
# Añade un objeto AutoShape con tipo establecido como Rectángulo
pptxShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)
# Accede a la propiedad ITextFrame asociada con el AutoShape
pptxShape.add_text_frame("")
textFrame = pptxShape.text_frame
# Añade algo de texto al marco
textFrame.paragraphs[0].portions[0].text = "Aspose.Slides"
# Establece el hiperenlace para el texto de la porción
hm = textFrame.paragraphs[0].portions[0].portion_format.hyperlink_manager
hm.set_external_hyperlink_click("http://www.aspose.com")
# Guarda la presentación PPTX
pptxPresentation.save("hLinkPPTX_out.pptx", slides.export.SaveFormat.PPTX)