Jak ładować prezentacje w Pythonie

Jak ładować prezentacje w Pythonie

Aspose.Slides FOSS for Python pozwala otworzyć dowolny plik .pptx, sprawdzić jego zawartość i albo zapisać go ponownie jako PPTX, albo wyodrębnić z niego dane. Ten przewodnik obejmuje otwieranie pliku, iterację slajdów, odczytywanie tekstu kształtów oraz zapis w trybie round‑tripping.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

pip install aspose-slides-foss

Krok 2: Otwórz istniejącą prezentację

Przekaż ścieżkę 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: Sprawdź 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: Odczyt tekstu kształtu

Iteruj po kształtach i odczytaj tekst z kształtów, które mają 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: Odczyt 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: Zapis w trybie dwukierunkowym

Po sprawdzeniu lub modyfikacji prezentacji, zapisz ją ponownie jako PPTX:

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

Zapisywanie w innej ścieżce tworzy nowy plik. Zapisywanie w tej samej ścieżce nadpisuje oryginał.


Typowe problemy i rozwiązania

FileNotFoundError

Sprawdź, czy ścieżka do pliku .pptx jest poprawna względem katalogu roboczego. Użyj pathlib.Path do solidnego konstruowania ś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 wyłącznie .pptx (Office Open XML). Pliki starszego formatu .ppt (binarny 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 się przy użyciu hasattr(shape, "text_frame") and shape.text_frame is not None przed dostępem do tekstu.


Najczęściej zadawane pytania

Czy ładowanie zachowuje całą oryginalną treść?

Tak. Nieznane części XML są zachowywane dosłownie przy zapisie w trybie round‑trip. Biblioteka nie usunie żadnej zawartości XML, której jeszcze nie rozumie.

Czy mogę załadować plik PPTX zabezpieczony hasłem?

Prezentacje chronione 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 posiada właściwość content_type i bytes 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