Wie man Präsentationen in Python erstellt

Wie man Präsentationen in Python erstellt

Aspose.Slides FOSS for Python ermöglicht es Ihnen, PowerPoint‑Präsentationen vollständig in Python zu erstellen, ohne dass Microsoft Office erforderlich ist. Dieser Leitfaden zeigt, wie man eine neue Präsentation erstellt, Folien und Formen hinzufügt, Text formatiert und das Ergebnis speichert.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

Installieren Sie Aspose.Slides FOSS von PyPI. Python 3.10 oder höher ist erforderlich.

pip install aspose-slides-foss

Installation überprüfen:

import aspose.slides_foss as slides
print("Aspose.Slides FOSS ready")

Die lxml‑Abhängigkeit wird automatisch installiert. Es werden keine weiteren Systempakete benötigt.


Schritt 2: Importieren Sie die erforderlichen Module

Importieren Sie das Paket und das SaveFormat‑Enum, das zum Speichern benötigt wird.

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

Alle shape-type Konstanten befinden sich in aspose.slides_foss.ShapeType. Alle formatting types (FillType, NullableBool) sind ebenfalls in aspose.slides_foss.


Schritt 3: Präsentation erstellen

Verwenden Sie slides.Presentation() als Kontextmanager. Eine neue Präsentation beginnt mit einer leeren Folie.

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

with slides.Presentation() as prs:
    print(f"Slides in new presentation: {len(prs.slides)}")
    # work with prs inside this block
    prs.save("output.pptx", SaveFormat.PPTX)

Wichtig: Öffnen und verwenden Sie stets Presentation innerhalb eines with-Blocks. Speichern Sie keine Referenz außerhalb der with-Anweisung; Ressourcen werden nicht korrekt freigegeben.


Schritt 4: Zugriff auf eine Folie

Die erste Folie hat den Index 0. Eine leere Präsentation hat genau eine Folie.

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

with slides.Presentation() as prs:
    slide = prs.slides[0]  # zero-based index
    print(f"Slide at index 0: {slide}")
    prs.save("output.pptx", SaveFormat.PPTX)

Schritt 5: Form hinzufügen

Verwenden Sie slide.shapes.add_auto_shape(), um eine AutoShape hinzuzufügen. Die Parameter sind (shape_type, x, y, width, height), alle in Punkten (1 Punkt = 1/72 Zoll; Standardfolie ist 720 × 540 pt).

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 at (50, 50) with 400 wide and 120 tall
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 400, 120)

    # Attach a text frame
    shape.add_text_frame("Hello from Aspose.Slides FOSS!")

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

Schritt 6: Präsentation speichern

Rufen Sie prs.save(path, SaveFormat.PPTX) auf, bevor der with‑Block beendet wird. PPTX ist das einzige unterstützte Ausgabeformat.

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

Die Datei wird atomar geschrieben; tritt ein Fehler vor diesem Aufruf auf, wird keine Ausgabedatei erstellt.


Vollständiges funktionierendes Beispiel

Das folgende Skript erstellt eine zweifolige Präsentation mit einer Titelform auf der ersten Folie und einer Tabelle auf der zweiten.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    # --- Slide 1: title shape ---
    slide1 = prs.slides[0]
    title = slide1.shapes.add_auto_shape(ShapeType.RECTANGLE, 40, 40, 640, 80)
    tf = title.add_text_frame("Q1 Results: Executive Summary")
    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_height = 32
    fmt.font_bold = NullableBool.TRUE
    fmt.fill_format.fill_type = FillType.SOLID
    fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 70, 127)

    # --- Slide 2: table ---
    prs.slides.add_empty_slide(prs.layout_slides[0])
    slide2 = prs.slides[1]
    table = slide2.shapes.add_table(40, 40, [200.0, 120.0, 120.0], [40.0, 40.0, 40.0])
    headers = ["Region", "Revenue", "Growth"]
    data = [
        ["North", "$1.2M", "+8%"],
        ["South", "$0.9M", "+4%"],
    ]
    for col, header in enumerate(headers):
        table.rows[0][col].text_frame.text = header
    for row_idx, row_data in enumerate(data):
        for col, cell_text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = cell_text

    prs.save("q1-results.pptx", SaveFormat.PPTX)

print("Saved q1-results.pptx")

Häufige Probleme und Lösungen

ResourceWarning: unclosed Presentation

Sie instanziieren Presentation ohne einen with‑Block. Verwenden Sie immer:

with slides.Presentation() as prs:
    ...

AttributeError: __enter__

Wenn Sie diesen Fehler sehen, prüfen Sie, dass Sie aspose.slides_foss importiert haben (nicht aspose.slides). Der Paketname auf PyPI ist aspose-slides-foss und der Laufzeitimport ist aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX ist ein Enum‑Mitglied, keine Funktion. Verwenden Sie es als prs.save("file.pptx", SaveFormat.PPTX).


Häufig gestellte Fragen

Wie lautet die Standardfoliengröße?

Ein neuer Presentation() erstellt Folien in der Standardgröße von 10 × 7,5 Zoll (720 × 540 Punkt). Das Ändern der Foliengröße wird in dieser Ausgabe noch nicht unterstützt.

Kann ich mehr als eine Folie hinzufügen?

Ja. Rufen Sie prs.slides.add_empty_slide(prs.layout_slides[0]) auf, um eine leere Folie anzuhängen und darüber per Index zuzugreifen:

prs.slides.add_empty_slide(prs.layout_slides[0])
slide2 = prs.slides[1]

Kann ich eine vorhandene Datei öffnen und Folien hinzufügen?

Ja:

with slides.Presentation("existing.pptx") as prs:
    prs.slides.add_empty_slide(prs.layout_slides[0])
    prs.save("existing.pptx", SaveFormat.PPTX)

In welche Formate kann ich speichern?

Nur SaveFormat.PPTX wird unterstützt. Der Export nach PDF, HTML, SVG oder Bildern ist in dieser Ausgabe nicht verfügbar.


Siehe auch

 Deutsch