Jak ładować prezentacje w Python

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-foss

Krok 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)

Zobacz także

 Polski