Як зберігати презентації у Python

Як зберігати презентації у Python

Aspose.Slides FOSS for Python saves presentations exclusively to .pptx формат за допомогою prs.save(path, SaveFormat.PPTX). Цей посібник охоплює правильний шаблон збереження, збереження в інший шлях та поширені помилки, пов’язані зі збереженням.

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

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

pip install aspose-slides-foss

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

Завжди використовуйте менеджер контексту. Виклик збереження має відбуватися всередині with блоку.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

# Create new
with slides.Presentation() as prs:
    prs.save("new.pptx", SaveFormat.PPTX)

# Open existing
with slides.Presentation("input.pptx") as prs:
    prs.save("output.pptx", SaveFormat.PPTX)

Крок 3: Зберегти в кінці with Блоку

Розмістіть save() виклик як останню інструкцію всередині the with блок, після завершення всіх змін.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
    shape.add_text_frame("Hello, World!")
    prs.save("output.pptx", SaveFormat.PPTX)

Крок 4: Зберегти у інший шлях

Передайте інший шлях виводу, щоб створити новий файл без зміни оригіналу:

with slides.Presentation("template.pptx") as prs:
    # modify ...
    prs.save("customized.pptx", SaveFormat.PPTX)

The template.pptx файл не змінено; customized.pptx створюється (або перезаписується, якщо вже існує).


Крок 5: Перевірте результат

Після with блок завершується, файл завершений і закритий. Перевірте, чи існує:

import os
from pathlib import Path

output = Path("output.pptx")
print(f"Saved: {output.exists()}, size: {output.stat().st_size} bytes")

Підтримуваний формат збереження

ФорматЗначення EnumПідтримується
PPTX (Office Open XML)SaveFormat.PPTXТак
PDFN/AНі
HTMLN/AНі
SVGN/AНі
PNG / JPEGN/AНі
ODP (OpenDocument)N/AНі

Підтримується лише PPTX. Спроба зберегти в будь‑якому іншому форматі викличе NotImplementedError або помилку невідповідного формату.


Типові проблеми та їх вирішення

PermissionError: [Errno 13] Permission denied

Вихідний файл відкрито в іншій програмі (наприклад, PowerPoint відкрив файл). Закрийте файл в інших програмах перед збереженням.

Файл створено, але він порожній або пошкоджений

Переконайтеся prs.save() викликається всередині with блоку, а не після нього. Після with виходу блоку, Presentation об’єкт звільняється, і подальші виклики завершаться без повідомлення або викличуть помилку.

NotImplementedError при збереженні

Це трапляється, коли ви намагаєтеся зберегти у форматі, відмінному від PPTX, або коли під час збереження використовується непідтримувана функція (наприклад, діаграми чи анімації).


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

Чи можу я зберегти у той самий файл, який відкрив?

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

with slides.Presentation("deck.pptx") as prs:
    # modify ...
    prs.save("deck.pptx", SaveFormat.PPTX)  # overwrites original

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

Так. Передайте io.BytesIO об’єкт безпосередньо до prs.save() — він приймає будь‑який BinaryIO призначення:

import io
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

buf = io.BytesIO()
with slides.Presentation() as prs:
    # ... modify presentation ...
    prs.save(buf, SaveFormat.PPTX)

pptx_bytes = buf.getvalue()

Чи зберігає збереження вміст, який я не змінював?

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


Див. також

 Українська