Com desar presentacions a Python
Aspose.Slides FOSS for Python saves presentations exclusively to .pptx format utilitzant prs.save(path, SaveFormat.PPTX). Aquesta guia cobreix el patró correcte de desament, desar a una ruta diferent i errors comuns relacionats amb el desament.
Guia pas a pas
Pas 1: Instal·la el paquet
pip install aspose-slides-fossPas 2: Obre o crea una presentació
Utilitzeu sempre el gestor de context. La crida de desament ha de succeir dins del with bloc.
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)Pas 3: Desar al final del with Bloc
Col·loqueu el save() crida com a última instrucció dins del with bloc, després que totes les modificacions estiguin completes.
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)Pas 4: Desa a una ruta diferent
Passa una ruta de sortida diferent per crear un fitxer nou sense modificar l’original:
with slides.Presentation("template.pptx") as prs:
# modify ...
prs.save("customized.pptx", SaveFormat.PPTX)El template.pptx fitxer no s’ha modificat; customized.pptx es crea (o es sobreescriu si ja existeix).
Pas 5: Verifica la sortida
Després del with en sortir del bloc, el fitxer està complet i tancat. Comproveu que existeix:
import os
from pathlib import Path
output = Path("output.pptx")
print(f"Saved: {output.exists()}, size: {output.stat().st_size} bytes")Format de desament compatible
| Format | Valor d’Enumeració | Admet |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | Sí |
| N/A | No | |
| HTML | N/A | No |
| SVG | N/A | No |
| PNG / JPEG | N/A | No |
| ODP (OpenDocument) | N/A | No |
Només es suporta PPTX. Intentar desar en qualsevol altre format generarà NotImplementedError o un error de format no compatible.
Problemes comuns i solucions
PermissionError: [Errno 13] Permission denied
El fitxer de sortida està obert en una altra aplicació (p. ex., PowerPoint té el fitxer obert). Tanca el fitxer en les altres aplicacions abans de desar.
El fitxer es crea però apareix buit o corrupte
Assegureu-vos prs.save() es crida dins del with bloc, no després d’aquest. Després del with bloc surt, el Presentation objecte es disposa i les crides posteriors fallaran silenciosament o generaran un error.
NotImplementedError en desar
Això ocorre quan s’intenta desar en un format diferent de PPTX, o quan s’utilitza una característica no compatible (com ara gràfics o animacions) durant el desament.
Preguntes freqüents
Puc desar al mateix fitxer que vaig obrir?
Sí. Desar al mateix camí sobrescriu el fitxer original:
with slides.Presentation("deck.pptx") as prs:
# modify ...
prs.save("deck.pptx", SaveFormat.PPTX) # overwrites originalPuc desar a una memòria intermèdia de bytes en lloc d’un fitxer?
Sí. Passa un io.BytesIO objecte directament a prs.save() — accepta qualsevol BinaryIO destinació:
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()El desament conserva el contingut que no he modificat?
Sí. Les parts XML desconegudes del fitxer original es conserven literalment. La biblioteca només serialitza les parts del model del document que entén i passa sense modificar qualsevol XML que no reconeix.