Як завантажити презентації у Python

Як завантажити презентації у Python

Aspose.Slides FOSS for Python дозволяє відкривати будь‑який .pptx файл, переглядати його вміст і або зберігати його назад у PPTX, або витягувати дані з нього. У цьому посібнику розглядаються відкриття файлу, перебір слайдів, читання тексту форми та збереження з повторним відкриттям.

Покроковий посібник

Крок 1: Встановити пакет

pip install aspose-slides-foss

Крок 2: Відкрити існуючу презентацію

Передайте шлях до файлу slides.Presentation(). Використовуйте менеджер контексту, щоб забезпечити очищення.

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)

Невідомі XML‑частини у вихідному файлі зберігаються дослівно: бібліотека ніколи не видаляє вміст, який вона ще не розуміє.


Крок 3: Перевірити слайди

Ітерація по всіх слайдах і виведення їх індексу:

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

Крок 4: Прочитати текст форми

Перебирайте форми та зчитайте текст із форм, які мають 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}")

Крок 5: Читання властивостей документа

Отримати доступ до основних властивостей документа з 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}")

Крок 6: Збереження у зворотному циклі

Після перевірки або зміни презентації збережіть її назад у форматі PPTX:

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

Збереження в інший шлях створює новий файл. Збереження в той самий шлях перезаписує оригінал.


Поширені проблеми та виправлення

FileNotFoundError

Перевірте, чи правильний шлях до файлу .pptx відносно робочого каталогу. Використовуйте pathlib.Path для надійного формування шляху:

from pathlib import Path
path = Path(__file__).parent / "assets" / "deck.pptx"
with slides.Presentation(str(path)) as prs:
    ...

Exception: File format is not supported

Бібліотека підтримує лише .pptx (Office Open XML). Файли старого формату .ppt (бінарний PowerPoint 97–2003) не підтримуються.

У Shapes немає атрибуту text_frame

Деякі форми (Connectors, PictureFrames, GroupShapes) не мають text_frame. Перевіряйте hasattr(shape, "text_frame") and shape.text_frame is not None перед доступом до тексту.


Часті запитання

Чи зберігає завантаження весь оригінальний вміст?

Так. Невідомі частини XML зберігаються дослівно під час збереження у зворотному циклі. Бібліотека не видалятиме жодного XML‑вмісту, який вона ще не розуміє.

Чи можу я завантажити PPTX, захищений паролем?

Презентації, захищені паролем (зашифровані), не підтримуються в цій редакції.

Чи можу я витягнути вбудовані зображення?

Отримайте доступ до колекції зображень: prs.images повертає ImageCollection. Кожне зображення має властивість content_type і властивість bytes для читання необроблених даних зображення.

Чи підтримується завантаження з потоку в пам’яті?

Завантаження безпосередньо з io.BytesIO не доступне в поточному API. Спочатку запишіть байти у тимчасовий файл:

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)

Див. також

 Українська