Πώς να αποθηκεύσετε παρουσιάσεις στο Python
Aspose.Slides FOSS for Python saves presentations exclusively to .pptx μορφοποίηση με prs.save(path, SaveFormat.PPTX). Αυτός ο οδηγός καλύπτει το σωστό πρότυπο αποθήκευσης, την αποθήκευση σε διαφορετική διαδρομή και τα κοινά σφάλματα που σχετίζονται με την αποθήκευση.
Οδηγός βήμα προς βήμα
Βήμα 1: Εγκατάσταση του πακέτου
pip install aspose-slides-fossΒήμα 2: Ανοίξτε ή δημιουργήστε μια παρουσίαση
Πάντα χρησιμοποιήστε τον διαχειριστή περιβάλλοντος. Η κλήση αποθήκευσης πρέπει να γίνει μέσα στο 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)Βήμα 3: Αποθήκευση στο τέλος του with μπλοκ
Τοποθετήστε το save() κλήση ως την τελευταία εντολή μέσα στο with μπλοκ, αφού ολοκληρωθούν όλες οι τροποποιήσεις.
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)Βήμα 4: Αποθηκεύστε σε διαφορετική διαδρομή
Δώστε μια διαφορετική διαδρομή εξόδου για να δημιουργήσετε ένα νέο αρχείο χωρίς να τροποποιήσετε το αρχικό:
with slides.Presentation("template.pptx") as prs:
# modify ...
prs.save("customized.pptx", SaveFormat.PPTX)Το template.pptx αρχείο δεν τροποποιείται; customized.pptx δημιουργείται (ή αντικαθίσταται εάν υπάρχει ήδη).
Βήμα 5: Επαληθεύστε την έξοδο
Μετά το with μπλοκ τερματίζει, το αρχείο είναι πλήρες και κλειστό. Ελέγξτε αν υπάρχει:
import os
from pathlib import Path
output = Path("output.pptx")
print(f"Saved: {output.exists()}, size: {output.stat().st_size} bytes")Υποστηριζόμενη μορφή αποθήκευσης
| Μορφή | Τιμή Enum | Υποστηρίζεται |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | Ναι |
| N/A | Όχι | |
| HTML | N/A | Όχι |
| SVG | N/A | Όχι |
| PNG / JPEG | N/A | Όχι |
| ODP (OpenDocument) | N/A | Όχι |
Μόνο το PPTX υποστηρίζεται. Η προσπάθεια αποθήκευσης σε οποιαδήποτε άλλη μορφή θα προκαλέσει NotImplementedError ή σφάλμα μη υποστηριζόμενης μορφής.
Κοινά προβλήματα και διορθώσεις
PermissionError: [Errno 13] Permission denied
Το αρχείο εξόδου είναι ανοιχτό σε άλλη εφαρμογή (π.χ., το PowerPoint έχει το αρχείο ανοιχτό). Κλείστε το αρχείο σε άλλες εφαρμογές πριν την αποθήκευση.
Το αρχείο δημιουργείται αλλά φαίνεται κενό ή κατεστραμμένο
Βεβαιωθείτε prs.save() καλείται μέσα στο with μπλοκ, όχι μετά από αυτό. Μετά το with μπλοκ τερματίζει, το Presentation αντικείμενο διαγράφεται και οι επόμενες κλήσεις θα αποτύχουν σιωπηρά ή θα προκαλέσουν σφάλμα.
NotImplementedError κατά την αποθήκευση
Αυτό συμβαίνει όταν προσπαθείτε να αποθηκεύσετε σε μορφή διαφορετική από PPTX, ή όταν χρησιμοποιείτε μια μη υποστηριζόμενη λειτουργία (όπως διαγράμματα ή κινούμενα σχέδια) κατά την αποθήκευση.
Συχνές Ερωτήσεις
Μπορώ να αποθηκεύσω στο ίδιο αρχείο που άνοιξα;?
Ναι. Η αποθήκευση στην ίδια διαδρομή αντικαθιστά το αρχικό αρχείο:
with slides.Presentation("deck.pptx") as prs:
# modify ...
prs.save("deck.pptx", SaveFormat.PPTX) # overwrites originalΜπορώ να αποθηκεύσω σε buffer bytes αντί για αρχείο;?
Ναι. Περάστε ένα io.BytesIO αντικείμενο απευθείας στο prs.save() — δέχεται οποιοδήποτε 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()Η αποθήκευση διατηρεί το περιεχόμενο που δεν έχω τροποποιήσει;?
Ναι. Τα άγνωστα τμήματα XML από το αρχικό αρχείο διατηρούνται ακριβώς όπως είναι. Η βιβλιοθήκη σειριοποιεί μόνο τα τμήματα του μοντέλου εγγράφου που καταλαβαίνει και περνάει αδιατάρακτα οποιοδήποτε XML δεν αναγνωρίζει.