Как да заредим презентации в 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) файлове не се поддържат.

Формите нямат атрибут 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)

Вижте също

 Български