Kaip išsaugoti pristatymus Python
Aspose.Slides FOSS for Python saves presentations exclusively to .pptx formatas naudojant prs.save(path, SaveFormat.PPTX). Ši vadovas apima teisingą išsaugojimo šabloną, išsaugojimą į kitą kelią ir dažnas su išsaugojimu susijusias klaidas.
Žingsnis po žingsnio vadovas
Žingsnis 1: Įdiekite paketą
pip install aspose-slides-fossŽingsnis 2: Atidaryti arba sukurti pristatymą
Visada naudokite kontekstų valdyklę. Išsaugojimo kvietimas turi įvykti viduje with bloko.
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)Žingsnis 3: Išsaugoti pabaigoje with blokas
Įdėkite save() kvietimą kaip paskutinę komandą viduje with bloko, po to kai visi pakeitimai baigti.
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)Žingsnis 4: Išsaugoti į kitą kelią
Pateikite kitą išvesties kelią, kad sukurtumėte naują failą nekeičiant originalo:
with slides.Presentation("template.pptx") as prs:
# modify ...
prs.save("customized.pptx", SaveFormat.PPTX)Šis template.pptx failas nėra modifikuotas; customized.pptx yra sukurtas (arba perrašytas, jei jau egzistuoja).
Žingsnis 5: Patikrinkite išvestį
Po with bloko išeina, failas yra baigtas ir uždarytas. Patikrinkite, ar jis egzistuoja:
import os
from pathlib import Path
output = Path("output.pptx")
print(f"Saved: {output.exists()}, size: {output.stat().st_size} bytes")Palaikomas išsaugojimo formatas
| Formatas | Enum reikšmė | Palaikoma |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | Taip |
| N/A | Ne | |
| HTML | N/A | Ne |
| SVG | N/A | Ne |
| PNG / JPEG | N/A | Ne |
| ODP (OpenDocument) | N/A | Ne |
Palaikomas tik PPTX. Bandoma išsaugoti bet kuriuo kitu formatu sukels NotImplementedError arba nepalaikomo formato klaidą.
Dažnos problemos ir sprendimai
PermissionError: [Errno 13] Permission denied
Išvesties failas atvertas kitoje programoje (pvz., PowerPoint turi atvertą failą). Prieš išsaugojant uždarykite failą kitose programose.
Failas sukurtas, bet atrodo tuščias arba sugadintas
Užtikrinkite prs.save() kviečiamas viduje with bloko, ne po jo. Po with bloko išeina, Presentation objektas yra išlaisvinamas ir vėlesni kvietimai nesėkmingai nepastebimai arba sukels klaidą.
NotImplementedError išsaugant
Tai įvyksta, kai bandoma išsaugoti kitokiu formatu nei PPTX arba kai išsaugojimo metu naudojama nepalaikoma funkcija (pvz., diagramos arba animacijos).
Dažnai užduodami klausimai
Ar galiu išsaugoti į tą patį failą, kurį atidariau?
Taip. Išsaugojimas į tą patį kelią perrašo originalų failą:
with slides.Presentation("deck.pptx") as prs:
# modify ...
prs.save("deck.pptx", SaveFormat.PPTX) # overwrites originalAr galiu išsaugoti į baitų buferį, o ne į failą?
Taip. Perduokite io.BytesIO objektą tiesiogiai į prs.save() — jis priima bet kokį BinaryIO vietą:
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()Ar išsaugojimas išsaugo turinį, kurio nekeitiau?
Taip. Nežinomos XML dalys iš originalaus failo išsaugomos nepakitusiomis. Biblioteka serializuoja tik tas dokumento modelio dalis, kurias supranta, o visas nepažįstamas XML dalis perduoda nepakitusiomis.