Як зберігати презентації у 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 | Так |
| N/A | Ні | |
| HTML | N/A | Ні |
| SVG | N/A | Ні |
| PNG / JPEG | N/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, який не розпізнає.