Com desar presentacions a Python

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

Pas 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

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). 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 original

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


Vegeu també

 Català