Hantera textrutor i presentationer med Python
Introduktion
Texter på bilder finns vanligtvis i textrutor eller former. Därför måste du, för att lägga till text på en bild, lägga till en textruta och sedan placera någon text i textrutan. Aspose.Slides för Python tillhandahåller klassen AutoShape som låter dig lägga till en form som innehåller text.
Info
Aspose.Slides tillhandahåller också klassen Shape. Men inte alla former kan innehålla text.Note
Därför, när du arbetar med en form som du vill lägga till text i, kan du vilja kontrollera och bekräfta att den har kastats via klassen AutoShape. Endast då kan du arbeta med TextFrame, som är en egenskap under AutoShape. Se avsnittet Update Text på den här sidan.Skapa textrutor på bilder
- Skapa en instans av klassen Presentation.
- Hämta en referens till den första bilden.
- Lägg till en AutoShape med
ShapeType.RECTANGLEpå önskad position på bilden. - Ställ in texten i formens TextFrame.
- Spara presentationen som en PPTX‑fil.
Följande Python‑exempel implementerar dessa steg:
import aspose.slides as slides
# Instansiera Presentation-klassen.
with slides.Presentation() as presentation:
# Hämta den första bilden i presentationen.
slide = presentation.slides[0]
# Lägg till en AutoShape av typen RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)
shape.text_frame.text = "Aspose TextBox"
# Spara presentationen till disk.
presentation.save("TextBox.pptx", slides.export.SaveFormat.PPTX)
Kontrollera om en form är en textruta
Aspose.Slides tillhandahåller egenskapen is_text_box på klassen AutoShape, vilket låter dig avgöra om en form är en textruta.

Detta Python‑exempel visar hur du kontrollerar om en form skapades som en textruta:
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")
Observera att om du lägger till en AutoShape med hjälp av klassen ShapeCollection, returnerar formens is_text_box‑egenskap False. Efter att du har lagt till text—antingen med metoden add_text_frame eller genom att sätta text‑egenskapen—returnerar is_text_box 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 är falskt
shape1.add_text_frame("shape 1")
# shape1.is_text_box är sant
shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 110, 100, 40)
# shape2.is_text_box är falskt
shape2.text_frame.text = "shape 2"
# shape2.is_text_box är sant
shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 210, 100, 40)
# shape3.is_text_box är falskt
shape3.add_text_frame("")
# shape3.is_text_box är falskt
shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 100, 40)
# shape4.is_text_box är falskt
shape4.text_frame.text = ""
# shape4.is_text_box är falskt
Lägg till kolumner i textrutor
Aspose.Slides tillhandahåller egenskaperna column_count och column_spacing på klassen TextFrameFormat för att lägga till kolumner i textrutor. Du kan ange antalet kolumner och ställa in avståndet (i punkter) mellan kolumnerna.
Följande Python‑kod demonstrerar denna operation:
import aspose.slides as slides
with slides.Presentation() as presentation:
# Hämta den första bilden i presentationen.
slide = presentation.slides[0]
# Lägg till en AutoShape av typen RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
# Lägg till en TextFrame i rektangeln.
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!")
# Hämta textformatet för TextFrame.
format = shape.text_frame.text_frame_format
# Ange antalet kolumner i TextFrame.
format.column_count = 3
# Ange avståndet mellan kolumnerna.
format.column_spacing = 10
# Spara presentationen.
presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)
Uppdatera text
Aspose.Slides låter dig uppdatera texten i en enskild textruta eller i hela presentationen.
Följande Python‑exempel visar hur du uppdaterar all text i en presentation:
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
# Spara den ändrade presentationen.
presentation.save("TextChanged.pptx", slides.export.SaveFormat.PPTX)
Lägg till textrutor med hyperlänkar
Du kan infoga en länk i en textruta. När textrutan klickas öppnas länken.
För att lägga till en textruta som innehåller en hyperlänk, följ dessa steg:
- Skapa en instans av klassen Presentation.
- Hämta en referens till den första bilden.
- Lägg till en AutoShape med
ShapeType.RECTANGLEpå önskad position på bilden. - Ställ in texten i formens TextFrame.
- Hämta en referens till HyperlinkManager.
- Använd egenskapen
hyperlink_managerför att ange en extern klick‑hyperlänk. - Spara presentationen som en PPTX‑fil.
Detta Python‑exempel visar hur du lägger till en textruta med en hyperlänk på en bild:
import aspose.slides as slides
# Instansiera Presentation-klassen.
with slides.Presentation() as presentation:
# Hämta den första bilden i presentationen.
slide = presentation.slides[0]
# Lägg till en AutoShape av typen RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)
text_portion = shape.text_frame.paragraphs[0].portions[0]
# Lägg till text i ramen.
text_portion.text = "Aspose.Slides"
# Ange en hyperlänk för portions‑texten.
hyperlink_manager = text_portion.portion_format.hyperlink_manager
hyperlink_manager.set_external_hyperlink_click("http://www.aspose.com")
# Spara presentationen som en PPTX‑fil.
presentation.save("Hyperlink.pptx", slides.export.SaveFormat.PPTX)
Vanliga frågor
Vad är skillnaden mellan en textruta och en textplatshållare när du arbetar med masterslides?
En placeholder ärver stil/position från master och kan åsidosättas på layouts, medan en vanlig textruta är ett självständigt objekt på en specifik bild och förändras inte när du byter layout.
Hur kan jag utföra en massändring av text i hela presentationen utan att påverka text i diagram, tabeller och SmartArt?
Begränsa din iteration till auto‑former som har textramar och uteslut inbäddade objekt (charts, tables, SmartArt) genom att gå igenom deras samlingar separat eller hoppa över dessa objekttyper.