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-fossInstallation ü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 ShapeTypeAlle 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.