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

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

Aspose.Slides FOSS for Python lets you open any .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: Збереження у режимі round‑trip

Після перегляду або зміни презентації збережіть її назад у 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 (binary PowerPoint 97–2003) файли не підтримуються.

У форм немає атрибуту 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)

Див. також

 Українська