Πώς να φορτώσετε παρουσιάσεις σε Python

Πώς να φορτώσετε παρουσιάσεις σε Python

Το Aspose.Slides FOSS for Python σάς επιτρέπει να ανοίξετε οποιοδήποτε αρχείο .pptx, να ελέγξετε το περιεχόμενό του και είτε να το αποθηκεύσετε ξανά σε PPTX είτε να εξάγετε δεδομένα από αυτό. Αυτός ο οδηγός καλύπτει το άνοιγμα ενός αρχείου, την επανάληψη των διαφανειών, την ανάγνωση του κειμένου των σχημάτων και την αποθήκευση με round‑tripping.

Οδηγός βήμα προς βήμα

Βήμα 1: Εγκατάσταση του πακέτου

pip install aspose-slides-foss

Βήμα 2: Άνοιγμα υπάρχουσας παρουσίασης

Περάστε τη διαδρομή του αρχείου στο slides.Presentation(). Χρησιμοποιήστε τον διαχειριστή περιβάλλοντος για να εξασφαλίσετε τον καθαρισμό.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation("input.pptx") as prs:
    print(f"Slide count: {len(prs.slides)}")
    prs.save("output.pptx", SaveFormat.PPTX)

Άγνωστα τμήματα XML στο αρχείο προέλευσης διατηρούνται ακριβώς όπως είναι: η βιβλιοθήκη δεν αφαιρεί ποτέ περιεχόμενο που δεν έχει ακόμη καταλάβει.


Βήμα 3: Επιθεώρηση διαφανειών

Επανάληψη σε όλες τις διαφάνειες και εκτύπωση του δείκτη τους:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    for i, slide in enumerate(prs.slides):
        shape_count = len(slide.shapes)
        print(f"Slide {i}: {shape_count} shapes")

Βήμα 4: Ανάγνωση κειμένου σχήματος

Επανάληψη πάνω από σχήματα και ανάγνωση κειμένου από σχήματα που έχουν ένα TextFrame:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    for slide in prs.slides:
        for shape in slide.shapes:
            if hasattr(shape, "text_frame") and shape.text_frame is not None:
                text = shape.text_frame.text
                if text.strip():
                    print(f"  Shape text: {text!r}")

Βήμα 5: Ανάγνωση ιδιοτήτων εγγράφου

Πρόσβαση στις βασικές ιδιότητες του εγγράφου από prs.document_properties:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    props = prs.document_properties
    print(f"Title:   {props.title}")
    print(f"Author:  {props.author}")
    print(f"Subject: {props.subject}")

Βήμα 6: Αποθήκευση κυκλικής διαδρομής

Αφού ελέγξετε ή τροποποιήσετε την παρουσίαση, αποθηκεύστε την ξανά σε μορφή PPTX:

prs.save("output.pptx", SaveFormat.PPTX)

Η αποθήκευση σε διαφορετική διαδρομή δημιουργεί ένα νέο αρχείο. Η αποθήκευση στην ίδια διαδρομή αντικαθιστά το αρχικό.


Κοινά Προβλήματα και Διορθώσεις

FileNotFoundError

Ελέγξτε ότι η διαδρομή προς το αρχείο .pptx είναι σωστή σε σχέση με τον τρέχοντα φάκελο εργασίας. Χρησιμοποιήστε το pathlib.Path για αξιόπιστη κατασκευή διαδρομής:

from pathlib import Path
path = Path(__file__).parent / "assets" / "deck.pptx"
with slides.Presentation(str(path)) as prs:
    ...

Exception: File format is not supported

Η βιβλιοθήκη υποστηρίζει μόνο .pptx (Office Open XML). Τα παλαιά αρχεία .ppt (δυαδικά PowerPoint 97–2003) δεν υποστηρίζονται.

Τα σχήματα δεν έχουν χαρακτηριστικό text_frame

Ορισμένα σχήματα (Connectors, PictureFrames, GroupShapes) δεν έχουν text_frame. Προστατέψτε με hasattr(shape, "text_frame") and shape.text_frame is not None πριν την πρόσβαση στο κείμενο.


Συχνές Ερωτήσεις

Διατηρεί η φόρτωση όλο το αρχικό περιεχόμενο;

Ναι. Τα άγνωστα τμήματα XML διατηρούνται ακριβώς όπως είναι κατά την αποθήκευση σε κυκλική διαδρομή. Η βιβλιοθήκη δεν θα αφαιρέσει κανένα περιεχόμενο XML που δεν καταλαβαίνει ακόμη.

Μπορώ να φορτώσω ένα PPTX με προστασία κωδικού;

Οι παρουσιάσεις με προστασία κωδικού (κρυπτογραφημένες) δεν υποστηρίζονται σε αυτήν την έκδοση.

Μπορώ να εξάγω ενσωματωμένες εικόνες;

Πρόσβαση στη συλλογή εικόνων: prs.images επιστρέφει το ImageCollection. Κάθε εικόνα διαθέτει μια ιδιότητα content_type και μια ιδιότητα bytes για την ανάγνωση των ακατέργαστων δεδομένων εικόνας.

Υποστηρίζεται η φόρτωση από ροή μνήμης;

Η άμεση φόρτωση από io.BytesIO δεν είναι διαθέσιμη στην τρέχουσα API. Γράψτε τα bytes σε ένα προσωρινό αρχείο πρώτα:

import tempfile, os
import aspose.slides_foss as slides

with tempfile.NamedTemporaryFile(suffix=".pptx", delete=False) as tmp:
    tmp.write(pptx_bytes)
    tmp_path = tmp.name

try:
    with slides.Presentation(tmp_path) as prs:
        print(f"Slides: {len(prs.slides)}")
finally:
    os.unlink(tmp_path)

Δείτε επίσης

 Ελληνικά