Com desar presentacions a Python

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-foss

Pas 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

FormatValor d’EnumeracióAdmet
PPTX (Office Open XML)SaveFormat.PPTX
PDFN/ANo
HTMLN/ANo
SVGN/ANo
PNG / JPEGN/ANo
ODP (OpenDocument)N/ANo

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 original

Puc 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.


Vegeu també

 Català