Comment charger des présentations en Python

Comment charger des présentations en Python

Aspose.Slides FOSS for Python vous permet d’ouvrir n’importe quel fichier .pptx, d’inspecter son contenu, et soit de l’enregistrer à nouveau au format PPTX, soit d’en extraire les données. Ce guide couvre l’ouverture d’un fichier, l’itération des diapositives, la lecture du texte des formes et le processus de sauvegarde en aller‑retour.

Guide étape par étape

Étape 1 : Installer le package

pip install aspose-slides-foss

Étape 2 : Ouvrir une présentation existante

Passez le chemin du fichier à slides.Presentation(). Utilisez le gestionnaire de contexte pour garantir le nettoyage.

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)

Les parties XML inconnues dans le fichier source sont conservées mot pour mot : la bibliothèque ne supprime jamais le contenu qu’elle ne comprend pas encore.


Étape 3 : Inspecter les diapositives

Itérer sur toutes les diapositives et afficher leur index :

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")

Étape 4 : Lire le texte de la forme

Itérer sur les formes et lire le texte des formes qui possèdent un 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}")

Étape 5 : Lire les propriétés du document

Accéder aux propriétés principales du document depuis 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}")

Étape 6 : Enregistrement aller-retour

Après avoir inspecté ou modifié la présentation, enregistrez‑la à nouveau au format PPTX :

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

Enregistrement dans un chemin différent crée un nouveau fichier. Enregistrement dans le même chemin écrase l’original.


Problèmes courants et solutions

FileNotFoundError

Vérifiez que le chemin vers le fichier .pptx est correct par rapport au répertoire de travail. Utilisez pathlib.Path pour une construction de chemin robuste :

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

Exception: File format is not supported

La bibliothèque prend en charge .pptx (Office Open XML) uniquement. Les fichiers hérités .ppt (PowerPoint binaire 97–2003) ne sont pas pris en charge.

Les formes n’ont pas d’attribut text_frame

Certaines formes (Connectors, PictureFrames, GroupShapes) ne possèdent pas de text_frame. Utilisez hasattr(shape, "text_frame") and shape.text_frame is not None comme garde avant d’accéder au texte.


Foire aux questions

Le chargement préserve-t-il tout le contenu original ?

Oui. Les parties XML inconnues sont conservées mot pour mot lors de l’enregistrement en aller‑retour. La bibliothèque ne supprimera aucun contenu XML qu’elle ne comprend pas encore.

Puis-je charger un PPTX protégé par mot de passe ?

Les présentations protégées par mot de passe (cryptées) ne sont pas prises en charge dans cette édition.

Puis-je extraire les images intégrées ?

Accédez à la collection d’images : prs.images renvoie le ImageCollection. Chaque image possède une propriété content_type et une propriété bytes pour lire les données d’image brutes.

Le chargement à partir d’un flux en mémoire est‑il pris en charge ?

Le chargement directement depuis io.BytesIO n’est pas exposé dans l’API actuelle. Écrivez d’abord les octets dans un fichier temporaire :

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)

Voir aussi

 Français