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