Comment charger des présentations dans Python
Aspose.Slides FOSS for Python lets you open any .pptx fichier, inspectez son contenu, et soit le réenregistrez au format PPTX, soit extrayez les données. Ce guide couvre l’ouverture d’un fichier, l’itération des diapositives, la lecture du texte des formes et la 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érez sur toutes les diapositives et affichez leur indice :
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 des formes
Itérez sur les formes et lisez 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édez aux propriétés de base 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 : Sauvegarde en aller-retour
Après avoir inspecté ou modifié la présentation, sauvegardez-la à nouveau au format PPTX :
prs.save("output.pptx", SaveFormat.PPTX)Enregistrer vers un chemin différent crée un nouveau fichier. Enregistrer vers le même chemin écrase l’original.
Problèmes courants et solutions
FileNotFoundError
Vérifiez que le chemin vers le .pptx fichier 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 anciens .ppt (binary PowerPoint 97–2003) files are not supported.
Les formes n’ont pas d’attribut text_frame
Certain formes (Connectors, PictureFrames, GroupShapes) n’ont pas de text_frame. Protégez avec hasattr(shape, "text_frame") and shape.text_frame is not None 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 la sauvegarde 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 (chiffré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 un content_type et un bytes propriété pour lire les données brutes de l’image.
Le chargement depuis un flux en mémoire est-il pris en charge ?
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)