Jak ładować prezentacje w Python
Aspose.Slides FOSS for Python lets you open any .pptx plik, sprawdź jego zawartość i albo zapisz go ponownie jako PPTX, albo wyodrębnij z niego dane. Ten przewodnik opisuje otwieranie pliku, iterowanie slajdów, odczytywanie tekstu kształtów oraz zapisywanie w trybie round‑trip.
Przewodnik krok po kroku
Krok 1: Zainstaluj pakiet
pip install aspose-slides-fossKrok 2: Otwórz istniejącą prezentację
Przekaż ścieżkę do pliku do slides.Presentation(). Użyj menedżera kontekstu, aby zapewnić sprzątanie.
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)Nieznane części XML w pliku źródłowym są zachowywane dosłownie: biblioteka nigdy nie usuwa treści, której jeszcze nie rozumie.
Krok 3: Przeglądaj slajdy
Iteruj po wszystkich slajdach i wypisz ich indeks:
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")Krok 4: Odczytaj tekst kształtu
Iteruj po kształtach i odczytuj tekst z kształtów, które mają a TextFrame:
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}")Krok 5: Odczytaj właściwości dokumentu
Uzyskaj dostęp do podstawowych właściwości dokumentu z 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}")Krok 6: Zapisz w trybie round‑trip
Po przeglądzie lub modyfikacji prezentacji zapisz ją ponownie jako PPTX:
prs.save("output.pptx", SaveFormat.PPTX)Zapis pod inną ścieżką tworzy nowy plik. Zapis pod tą samą ścieżką nadpisuje oryginał.
Typowe problemy i rozwiązania
FileNotFoundError
Sprawdź, czy ścieżka do .pptx pliku jest poprawna względem katalogu roboczego. Użyj pathlib.Path do solidnej konstrukcji ścieżek:
from pathlib import Path
path = Path(__file__).parent / "assets" / "deck.pptx"
with slides.Presentation(str(path)) as prs:
...Exception: File format is not supported
Biblioteka obsługuje .pptx (Office Open XML) tylko. Starsze .ppt (binarne pliki PowerPoint 97–2003) nie są obsługiwane.
Kształty nie mają atrybutu text_frame
Niektóre kształty (Connectors, PictureFrames, GroupShapes) nie mają text_frame. Zabezpiecz przy użyciu hasattr(shape, "text_frame") and shape.text_frame is not None przed dostępem do tekstu.
Najczęściej zadawane pytania
Czy wczytywanie zachowuje całą oryginalną zawartość?
Tak. Nieznane części XML są zachowywane wprost przy zapisie round‑trip. Biblioteka nie usuwa żadnej zawartości XML, której jeszcze nie rozumie.
Czy mogę wczytać zabezpieczony hasłem plik PPTX?
Prezentacje zabezpieczone hasłem (zaszyfrowane) nie są obsługiwane w tej edycji.
Czy mogę wyodrębnić osadzone obrazy?
Uzyskaj dostęp do kolekcji obrazów: prs.images zwraca ImageCollection. Każdy obraz ma content_type i bytes właściwość do odczytu surowych danych obrazu.
Czy ładowanie z pamięciowego strumienia jest obsługiwane?
Ładowanie bezpośrednio z io.BytesIO nie jest udostępnione w bieżącym API. Najpierw zapisz bajty do pliku tymczasowego:
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)