Com desar presentacions a Python
Aspose.Slides FOSS per a Python desa presentacions exclusivament al format .pptx 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ó
Sempre utilitzeu el gestor de context. La crida de guardat ha de ser dins del bloc 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)Pas 3: Desa al final del bloc with
Col·loca la crida save() com a última instrucció dins del bloc with, 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: Desar a una ruta diferent
Passeu un camí d’eixida 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 fitxer template.pptx no es modifica; customized.pptx es crea (o es sobreescriu si ja existeix).
Pas 5: Verifica la sortida
Després que el bloc with surti, 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). Tanqueu el fitxer en altres aplicacions abans de desar.
El fitxer es crea però apareix buit o corromput
Assegureu que prs.save() es crida dins del bloc with, no després d’aquest. Un cop el bloc with finalitza, l’objecte Presentation es disposa i les crides posteriors fallaran silenciosament o generaran un error.
NotImplementedError en desar
Això ocorre quan s’intenta un format de desament 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í. Passeu un objecte io.BytesIO directament a prs.save() — accepta qualsevol destinació 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()Desar 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 de document que entén i passa a través de qualsevol XML que no reconeix.