Как да заредим презентации в 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: Запис с обратен процес

След като прегледате или промените презентацията, запишете я обратно в 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 части се запазват дословно при запазване с round‑trip. Библиотеката няма да премахне 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)

Вижте също

 Български