Textfelder in Präsentationen mit Python verwalten

Übersicht

Texte auf Folien befinden sich typischerweise in Textfeldern oder Formen. Daher müssen Sie, um Text zu einer Folie hinzuzufügen, ein Textfeld hinzufügen und dann Text in das Textfeld einfügen. Aspose.Slides für Python stellt die AutoShape Klasse bereit, die es Ihnen ermöglicht, eine Form mit Text hinzuzufügen.

Textfelder auf Folien erstellen

Um ein Textfeld auf einer Folie zu erstellen:

  1. Erstellen Sie eine Instanz der Presentation Klasse.
  2. Holen Sie eine Referenz zur ersten Folie.
  3. Fügen Sie eine AutoShape mit ShapeType.RECTANGLE an der gewünschten Position auf der Folie hinzu.
  4. Setzen Sie den Text im TextFrame der Form.
  5. Speichern Sie die Präsentation als PPTX-Datei.

Das folgende Python-Beispiel implementiert diese Schritte:

import aspose.slides as slides

# Instanziieren Sie die Presentation-Klasse.
with slides.Presentation() as presentation:

    # Holen Sie die erste Folie aus der Präsentation.
    slide = presentation.slides[0]

    # Fügen Sie eine AutoShape vom Typ RECTANGLE hinzu.
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)

    shape.text_frame.text = "Aspose TextBox"

    # Speichern Sie die Präsentation auf dem Datenträger.
    presentation.save("TextBox.pptx", slides.export.SaveFormat.PPTX)

Überprüfen, ob eine Form ein Textfeld ist

Aspose.Slides stellt die is_text_box Eigenschaft auf der AutoShape Klasse bereit, mit der Sie bestimmen können, ob eine Form ein Textfeld ist.

Textfeld und Form

Dieses Python-Beispiel zeigt, wie man prüft, ob eine Form als Textfeld erstellt wurde:

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")

Beachten Sie, dass wenn Sie eine AutoShape mit der ShapeCollection Klasse hinzufügen, die is_text_box Eigenschaft der Form False zurückgibt. Nachdem Sie jedoch Text hinzugefügt haben – entweder mit der add_text_frame Methode oder durch Setzen der text Eigenschaft – gibt is_text_box True zurück.

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 ist falsch
    shape1.add_text_frame("shape 1")
    # shape1.is_text_box ist wahr

    shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 110, 100, 40)
    # shape2.is_text_box ist falsch
    shape2.text_frame.text = "shape 2"
    # shape2.is_text_box ist wahr

    shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 210, 100, 40)
    # shape3.is_text_box ist falsch
    shape3.add_text_frame("")
    # shape3.is_text_box ist falsch

    shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 100, 40)
    # shape4.is_text_box ist falsch
    shape4.text_frame.text = ""
    # shape4.is_text_box ist falsch

Spalten zu Textfeldern hinzufügen

Aspose.Slides stellt die column_count und column_spacing Eigenschaften auf der TextFrameFormat Klasse zur Verfügung, um Spalten zu Textfeldern hinzuzufügen. Sie können die Anzahl der Spalten angeben und den Abstand (in Punkten) zwischen den Spalten festlegen.

Der folgende Python-Code demonstriert diesen Vorgang:

import aspose.slides as slides

with slides.Presentation() as presentation:

	# Holen Sie die erste Folie aus der Präsentation.
	slide = presentation.slides[0]

	# Fügen Sie eine AutoShape vom Typ RECTANGLE hinzu.
	shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)

	# Fügen Sie dem Rechteck ein TextFrame hinzu.
	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!")

	# Holen Sie das Textformat des TextFrames.
	format = shape.text_frame.text_frame_format

	# Geben Sie die Anzahl der Spalten im TextFrame an.
	format.column_count = 3

	# Geben Sie den Abstand zwischen den Spalten an.
	format.column_spacing = 10

	# Speichern Sie die Präsentation.
	presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)

Text aktualisieren

Aspose.Slides ermöglicht es Ihnen, den Text in einem einzelnen Textfeld oder in einer gesamten Präsentation zu aktualisieren.

Das folgende Python-Beispiel zeigt, wie man den gesamten Text in einer Präsentation aktualisiert:

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
  
    # Speichern Sie die geänderte Präsentation.
    presentation.save("TextChanged.pptx", slides.export.SaveFormat.PPTX)

Sie können in einem Textfeld einen Link einfügen. Wenn das Textfeld angeklickt wird, öffnet sich der Link.

Um ein Textfeld mit einem Hyperlink hinzuzufügen, gehen Sie wie folgt vor:

  1. Erstellen Sie eine Instanz der Presentation Klasse.
  2. Holen Sie eine Referenz zur ersten Folie.
  3. Fügen Sie eine AutoShape mit ShapeType.RECTANGLE an der gewünschten Position auf der Folie hinzu.
  4. Setzen Sie den Text im TextFrame der Form.
  5. Holen Sie eine Referenz zum HyperlinkManager.
  6. Verwenden Sie die hyperlink_manager Eigenschaft, um einen externen Klick-Hyperlink festzulegen.
  7. Speichern Sie die Präsentation als PPTX-Datei.

Dieses Python-Beispiel zeigt, wie man ein Textfeld mit einem Hyperlink zu einer Folie hinzufügt:

import aspose.slides as slides

# Instanziieren Sie die Presentation-Klasse.
with slides.Presentation() as presentation:

    # Holen Sie die erste Folie aus der Präsentation.
    slide = presentation.slides[0]

    # Fügen Sie eine AutoShape vom Typ RECTANGLE hinzu.
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)

    text_portion = shape.text_frame.paragraphs[0].portions[0]

    # Text zum Frame hinzufügen.
    text_portion.text = "Aspose.Slides"

    # Setzen Sie einen Hyperlink für den Portion-Text.
    hyperlink_manager = text_portion.portion_format.hyperlink_manager
    hyperlink_manager.set_external_hyperlink_click("http://www.aspose.com")

    # Speichern Sie die Präsentation als PPTX-Datei.
    presentation.save("Hyperlink.pptx", slides.export.SaveFormat.PPTX)

FAQ

Was ist der Unterschied zwischen einem Textfeld und einem Textplatzhalter bei der Arbeit mit Masterfolien?

Ein Platzhalter erbt Stil/Position vom Master und kann auf Layouts überschrieben werden, während ein reguläres Textfeld ein unabhängiges Objekt auf einer bestimmten Folie ist und sich nicht ändert, wenn Sie das Layout wechseln.

Wie kann ich einen massiven Textaustausch in der gesamten Präsentation durchführen, ohne den Text in Diagrammen, Tabellen und SmartArt zu verändern?

Beschränken Sie die Iteration auf AutoShapes, die Textframes besitzen, und schließen Sie eingebettete Objekte (Diagramme, Tabellen, SmartArt) aus, indem Sie deren Sammlungen separat durchlaufen oder diese Objekttypen überspringen.