Gestisci le caselle di testo nelle presentazioni con Python
Introduzione
I testi nelle diapositive si trovano tipicamente in caselle di testo o forme. Pertanto, per aggiungere del testo a una diapositiva, è necessario aggiungere una casella di testo e poi inserire del testo all’interno della casella. Aspose.Slides per Python fornisce la classe AutoShape che consente di aggiungere una forma contenente del testo.
Informazioni
Aspose.Slides fornisce anche la classe Shape. Tuttavia, non tutte le forme possono contenere testo.Nota
Pertanto, quando si lavora con una forma a cui si desidera aggiungere del testo, potrebbe essere necessario verificare e confermare che sia stata convertita tramite la classe AutoShape. Solo allora sarà possibile lavorare con TextFrame, che è una proprietà di AutoShape. Vedere la sezione Update Text in questa pagina.Crea caselle di testo su diapositive
- Crea un’istanza della classe Presentation.
- Ottieni un riferimento alla prima diapositiva.
- Aggiungi un AutoShape con
ShapeType.RECTANGLEnella posizione desiderata sulla diapositiva. - Imposta il testo nel TextFrame della forma.
- Salva la presentazione come file PPTX.
Il seguente esempio Python implementa questi passaggi:
import aspose.slides as slides
# Istanzia la classe Presentation.
with slides.Presentation() as presentation:
# Ottieni la prima diapositiva nella presentazione.
slide = presentation.slides[0]
# Aggiungi un AutoShape di tipo RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)
shape.text_frame.text = "Aspose TextBox"
# Salva la presentazione su disco.
presentation.save("TextBox.pptx", slides.export.SaveFormat.PPTX)
Verifica se una forma è una casella di testo
Aspose.Slides fornisce la proprietà is_text_box sulla classe AutoShape, che consente di determinare se una forma è una casella di testo.

Questo esempio Python mostra come verificare se una forma è stata creata come casella di testo:
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")
Nota che se aggiungi un AutoShape utilizzando la classe ShapeCollection, la proprietà is_text_box della forma restituisce False. Tuttavia, dopo aver aggiunto del testo—o con il metodo add_text_frame o impostando la proprietà text—is_text_box restituisce 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 è falso
shape1.add_text_frame("shape 1")
# shape1.is_text_box è vero
shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 110, 100, 40)
# shape2.is_text_box è falso
shape2.text_frame.text = "shape 2"
# shape2.is_text_box è vero
shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 210, 100, 40)
# shape3.is_text_box è falso
shape3.add_text_frame("")
# shape3.is_text_box è falso
shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 100, 40)
# shape4.is_text_box è falso
shape4.text_frame.text = ""
# shape4.is_text_box è falso
Aggiungi colonne alle caselle di testo
Aspose.Slides fornisce le proprietà column_count e column_spacing sulla classe TextFrameFormat per aggiungere colonne alle caselle di testo. È possibile specificare il numero di colonne e impostare la spaziatura (in punti) tra le colonne.
Il seguente codice Python dimostra questa operazione:
import aspose.slides as slides
with slides.Presentation() as presentation:
# Ottieni la prima diapositiva nella presentazione.
slide = presentation.slides[0]
# Aggiungi un AutoShape di tipo RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
# Aggiungi un TextFrame al rettangolo.
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!")
# Ottieni il formato del testo del TextFrame.
format = shape.text_frame.text_frame_format
# Specifica il numero di colonne nel TextFrame.
format.column_count = 3
# Specifica la spaziatura tra le colonne.
format.column_spacing = 10
# Salva la presentazione.
presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)
Aggiorna testo
Aspose.Slides consente di aggiornare il testo in una singola casella di testo oppure in tutta la presentazione.
Il seguente esempio Python dimostra come aggiornare tutto il testo in una presentazione:
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
# Salva la presentazione modificata.
presentation.save("TextChanged.pptx", slides.export.SaveFormat.PPTX)
Aggiungi caselle di testo con collegamenti ipertestuali
È possibile inserire un collegamento in una casella di testo. Quando la casella di testo viene cliccata, il collegamento si apre.
Per aggiungere una casella di testo contenente un collegamento ipertestuale, seguire questi passaggi:
- Crea un’istanza della classe Presentation.
- Ottieni un riferimento alla prima diapositiva.
- Aggiungi un AutoShape con
ShapeType.RECTANGLEnella posizione desiderata sulla diapositiva. - Imposta il testo nel TextFrame della forma.
- Ottieni un riferimento al HyperlinkManager.
- Usa la proprietà
hyperlink_managerper impostare un collegamento ipertestuale esterno al click. - Salva la presentazione come file PPTX.
Questo esempio Python mostra come aggiungere una casella di testo con un collegamento ipertestuale a una diapositiva:
import aspose.slides as slides
# Instanzia la classe Presentation.
with slides.Presentation() as presentation:
# Ottieni la prima diapositiva nella presentazione.
slide = presentation.slides[0]
# Aggiungi un AutoShape di tipo RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)
text_portion = shape.text_frame.paragraphs[0].portions[0]
# Aggiungi testo al frame.
text_portion.text = "Aspose.Slides"
# Imposta un collegamento ipertestuale per il testo della porzione.
hyperlink_manager = text_portion.portion_format.hyperlink_manager
hyperlink_manager.set_external_hyperlink_click("http://www.aspose.com")
# Salva la presentazione come file PPTX.
presentation.save("Hyperlink.pptx", slides.export.SaveFormat.PPTX)
FAQ
Qual è la differenza tra una casella di testo e un segnaposto di testo quando si lavora con le diapositive master?
Un placeholder eredita lo stile/posizione dal master e può essere sovrascritto nei layout, mentre una casella di testo normale è un oggetto indipendente su una diapositiva specifica e non cambia quando si cambiano i layout.
Come posso eseguire una sostituzione massiva del testo in tutta la presentazione senza modificare il testo all’interno di grafici, tabelle e SmartArt?
Limita l’iterazione alle auto-forme che possiedono frame di testo ed escludi gli oggetti incorporati (charts, tables, SmartArt) attraversando le loro collezioni separatamente o ignorando quei tipi di oggetti.