Wie man Formen zu PowerPoint in Python hinzufügt

Wie man Formen zu PowerPoint in Python hinzufügt

Aspose.Slides FOSS for Python unterstützt das Hinzufügen von AutoShapes, Tables, Connectors und PictureFrames zu Präsentationsfolien. Alle Shape‑Typen werden über die slide.shapes‑Sammlung hinzugefügt.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

pip install aspose-slides-foss

Installation überprüfen:

import aspose.slides_foss as slides
print("Ready")

Schritt 2: Präsentation erstellen

Verwenden Sie immer Presentation als Kontextmanager.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    # ... add shapes ...
    prs.save("output.pptx", SaveFormat.PPTX)

Schritt 3: AutoShape hinzufügen

slide.shapes.add_auto_shape(shape_type, x, y, width, height) platziert eine Form an der angegebenen Position und Größe (alle in Punkten). Verwenden Sie ShapeType Konstanten, um die Form auszuwählen.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    # Rectangle
    rect = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
    rect.add_text_frame("Rectangle shape")

    # Ellipse
    ellipse = slide.shapes.add_auto_shape(ShapeType.ELLIPSE, 400, 50, 200, 100)
    ellipse.add_text_frame("Ellipse shape")

    prs.save("autoshapes.pptx", SaveFormat.PPTX)

Schritt 4: Tabelle hinzufügen

slide.shapes.add_table(x, y, col_widths, row_heights) erstellt eine Tabelle an der angegebenen Position. Spaltenbreiten und Zeilenhöhen sind Listen von Punktwerten.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    col_widths = [150.0, 150.0, 150.0]
    row_heights = [40.0, 40.0, 40.0]
    table = slide.shapes.add_table(50, 200, col_widths, row_heights)

    # Set header row text
    headers = ["Product", "Units", "Revenue"]
    for col, text in enumerate(headers):
        table.rows[0][col].text_frame.text = text

    # Set data rows
    rows = [
        ["Widget A", "120", "$2,400"],
        ["Widget B", "85", "$1,700"],
    ]
    for row_idx, row_data in enumerate(rows):
        for col, text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = text

    prs.save("table.pptx", SaveFormat.PPTX)

Schritt 5: Connector hinzufügen

Verbinder verknüpfen zwei Formen visuell. Erstellen Sie zuerst die Formen, fügen Sie dann einen Verbinder hinzu und setzen Sie dessen Start‑ und Endanschlusspunkte.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    box1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 100, 150, 60)
    box1.add_text_frame("Start")

    box2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 100, 150, 60)
    box2.add_text_frame("End")

    conn = slide.shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)
    conn.start_shape_connected_to = box1
    conn.start_shape_connection_site_index = 3  # right side of box1
    conn.end_shape_connected_to = box2
    conn.end_shape_connection_site_index = 1    # left side of box2

    prs.save("connector.pptx", SaveFormat.PPTX)

Verbindungsstellen-Indizes werden für ein Rechteck von 0–3 nummeriert: oben=0, links=1, unten=2, rechts=3.


Schritt 6: Bildrahmen hinzufügen

Betten Sie ein Bild ein und fügen Sie es der Folie als PictureFrame hinzu. Lesen Sie zunächst die Bild‑Bytes, fügen Sie sie der Bildsammlung der Präsentation hinzu und erstellen Sie dann den Rahmen.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    with open("logo.png", "rb") as f:
        image_data = f.read()

    image = prs.images.add_image(image_data)

    slide = prs.slides[0]
    slide.shapes.add_picture_frame(
        ShapeType.RECTANGLE,  # bounding shape type
        50, 50,               # x, y in points
        200, 150,             # width, height in points
        image
    )

    prs.save("with-image.pptx", SaveFormat.PPTX)

Häufige Probleme und Lösungen

Form erscheint außerhalb des sichtbaren Folienbereichs

Folien haben standardmäßig 720 × 540 Punkte. Werte von x oder y, die diese Grenzen überschreiten, platzieren die Form außerhalb der Folie. Behalte x < 720 und y < 540 bei und stelle sicher, dass x + width <= 720 und y + height <= 540.

AttributeError: 'NoneType' object has no attribute 'text_frame'

add_auto_shape() gibt das Shape-Objekt direkt zurück. Wenn Sie None sehen, prüfen Sie, dass Sie den Rückgabewert nicht verwerfen.

Tabellenzellen-Text ist nach Zuweisung leer

Die korrekte Eigenschaft ist .text_frame.text (nicht .text direkt auf der Zelle). Greifen Sie auf Zellen zu als table.rows[row_index][col_index].text_frame.text = "value".


Häufig gestellte Fragen

Wie viele Formen kann ich zu einer Folie hinzufügen?

Es gibt keine von der Bibliothek auferlegte Grenze. Praktische Grenzen hängen von der Dateigröße und der Rendering‑Fähigkeit Ihres Ziel‑PPTX‑Viewers ab.

Kann ich die Position einer Form ändern, nachdem ich sie hinzugefügt habe?

Ja. Das von add_auto_shape() zurückgegebene Shape‑Objekt verfügt über die Eigenschaften x, y, width und height, die Sie festlegen können:

shape.x = 100
shape.y = 200
shape.width = 400
shape.height = 80

Kann ich die Farbe der Formkontur (Rand) festlegen?

Ja, über shape.line_format:

from aspose.slides_foss.drawing import Color
shape.line_format.fill_format.solid_fill_color.color = Color.from_argb(255, 200, 0, 0)

Werden Diagramme unterstützt?

Nein. Diagramme, SmartArt und OLE‑Objekte sind in dieser Ausgabe nicht implementiert und lösen NotImplementedError aus.


Siehe auch

 Deutsch