Wie man Präsentationen in Python lädt
Aspose.Slides FOSS for Python ermöglicht das Öffnen jeder .pptx‑Datei, das Inspizieren ihres Inhalts und entweder das Zurückspeichern als PPTX oder das Extrahieren von Daten daraus. Dieser Leitfaden behandelt das Öffnen einer Datei, das Durchlaufen von Folien, das Lesen von Formtexten und das Round‑Trip‑Speichern.
Schritt-für-Schritt-Anleitung
Schritt 1: Installieren Sie das Paket
pip install aspose-slides-fossSchritt 2: Öffnen einer vorhandenen Präsentation
Übergeben Sie den Dateipfad an slides.Presentation(). Verwenden Sie den Kontextmanager, um die Bereinigung sicherzustellen.
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
with slides.Presentation("input.pptx") as prs:
print(f"Slide count: {len(prs.slides)}")
prs.save("output.pptx", SaveFormat.PPTX)Unbekannte XML‑Teile in der Quelldatei werden unverändert beibehalten: Die Bibliothek entfernt niemals Inhalte, die sie noch nicht versteht.
Schritt 3: Folien prüfen
Iterieren Sie über alle Folien und geben Sie deren Index aus:
import aspose.slides_foss as slides
with slides.Presentation("deck.pptx") as prs:
for i, slide in enumerate(prs.slides):
shape_count = len(slide.shapes)
print(f"Slide {i}: {shape_count} shapes")Schritt 4: Shape-Text lesen
Iterieren Sie über Formen und lesen Sie den Text aus Formen, die ein TextFrame besitzen:
import aspose.slides_foss as slides
with slides.Presentation("deck.pptx") as prs:
for slide in prs.slides:
for shape in slide.shapes:
if hasattr(shape, "text_frame") and shape.text_frame is not None:
text = shape.text_frame.text
if text.strip():
print(f" Shape text: {text!r}")Schritt 5: Dokumenteigenschaften lesen
Zugriff auf Kerndokumenteigenschaften von prs.document_properties:
import aspose.slides_foss as slides
with slides.Presentation("deck.pptx") as prs:
props = prs.document_properties
print(f"Title: {props.title}")
print(f"Author: {props.author}")
print(f"Subject: {props.subject}")Schritt 6: Round‑Trip‑Speichern
Nachdem Sie die Präsentation überprüft oder geändert haben, speichern Sie sie wieder im PPTX-Format:
prs.save("output.pptx", SaveFormat.PPTX)Das Speichern an einem anderen Pfad erstellt eine neue Datei. Das Speichern am selben Pfad überschreibt das Original.
Häufige Probleme und Lösungen
FileNotFoundError
Überprüfen Sie, ob der Pfad zur .pptx‑Datei relativ zum Arbeitsverzeichnis korrekt ist. Verwenden Sie pathlib.Path für eine robuste Pfadkonstruktion:
from pathlib import Path
path = Path(__file__).parent / "assets" / "deck.pptx"
with slides.Presentation(str(path)) as prs:
...Exception: File format is not supported
Die Bibliothek unterstützt nur .pptx (Office Open XML). Legacy .ppt (binäre PowerPoint‑97–2003‑Dateien) werden nicht unterstützt.
Shapes haben kein text_frame-Attribut
Einige Shapes (Connectors, PictureFrames, GroupShapes) besitzen kein text_frame. Schützen Sie den Zugriff mit hasattr(shape, "text_frame") and shape.text_frame is not None, bevor Sie auf den Text zugreifen.
Häufig gestellte Fragen
Bewahrt das Laden den gesamten Originalinhalt?
Ja. Unbekannte XML‑Teile werden beim Round‑Trip‑Speichern unverändert beibehalten. Die Bibliothek entfernt keinen XML‑Inhalt, den sie noch nicht versteht.
Kann ich eine passwortgeschützte PPTX laden?
Passwortgeschützte (verschlüsselte) Präsentationen werden in dieser Ausgabe nicht unterstützt.
Kann ich eingebettete Bilder extrahieren?
Greifen Sie auf die Bildersammlung zu: prs.images gibt das ImageCollection zurück. Jedes Bild verfügt über eine content_type‑ und eine bytes‑Eigenschaft, um die Rohbilddaten zu lesen.
Wird das Laden aus einem In‑Memory‑Stream unterstützt?
Das direkte Laden von io.BytesIO ist in der aktuellen API nicht verfügbar. Schreiben Sie die Bytes zuerst in eine temporäre Datei:
import tempfile, os
import aspose.slides_foss as slides
with tempfile.NamedTemporaryFile(suffix=".pptx", delete=False) as tmp:
tmp.write(pptx_bytes)
tmp_path = tmp.name
try:
with slides.Presentation(tmp_path) as prs:
print(f"Slides: {len(prs.slides)}")
finally:
os.unlink(tmp_path)