Comment créer des présentations en Python

Comment créer des présentations en Python

Aspose.Slides FOSS for Python vous permet de créer des présentations PowerPoint entièrement en Python sans dépendance à Microsoft Office. Ce guide montre comment créer une nouvelle présentation, ajouter des diapositives et des formes, formater le texte et enregistrer le résultat.

Guide étape par étape

Étape 1 : Installer le package

Installez Aspose.Slides FOSS depuis PyPI. Python 3.10 ou version ultérieure est requis.

pip install aspose-slides-foss

Vérifiez l’installation :

import aspose.slides_foss as slides
print("Aspose.Slides FOSS ready")

La dépendance lxml est installée automatiquement. Aucun autre paquet système n’est requis.


Étape 2 : Importer les modules requis

Importez le package et l’énumération SaveFormat nécessaire pour l’enregistrement.

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

Toutes les constantes de type forme se trouvent dans aspose.slides_foss.ShapeType. Tous les types de formatage (FillType, NullableBool) sont également dans aspose.slides_foss.


Étape 3 : Créer une présentation

Utilisez slides.Presentation() comme gestionnaire de contexte. Une nouvelle présentation commence avec une diapositive vierge.

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

with slides.Presentation() as prs:
    print(f"Slides in new presentation: {len(prs.slides)}")
    # work with prs inside this block
    prs.save("output.pptx", SaveFormat.PPTX)

Important : Ouvrez toujours et utilisez Presentation à l’intérieur d’un bloc with. Ne stockez pas de référence en dehors de l’instruction with ; les ressources ne seront pas libérées correctement.


Étape 4 : Accéder à une diapositive

La première diapositive se trouve à l’index 0. Une présentation vierge contient exactement une diapositive.

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

with slides.Presentation() as prs:
    slide = prs.slides[0]  # zero-based index
    print(f"Slide at index 0: {slide}")
    prs.save("output.pptx", SaveFormat.PPTX)

Étape 5 : Ajouter une forme

Utilisez slide.shapes.add_auto_shape() pour ajouter une AutoShape. Les paramètres sont (shape_type, x, y, width, height) tous en points (1 point = 1/72 pouce ; la diapositive standard est de 720 × 540 pt).

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]

    # Rectangle at (50, 50) with 400 wide and 120 tall
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 400, 120)

    # Attach a text frame
    shape.add_text_frame("Hello from Aspose.Slides FOSS!")

    prs.save("with-shape.pptx", SaveFormat.PPTX)

Étape 6 : Enregistrer la présentation

Appelez prs.save(path, SaveFormat.PPTX) avant que le bloc with ne se termine. PPTX est le seul format de sortie pris en charge.

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

Le fichier est écrit de manière atomique ; si une erreur survient avant cet appel, aucun fichier de sortie n’est créé.


Exemple complet fonctionnel

Le script suivant crée une présentation de deux diapositives avec une forme de titre sur la première diapositive et un tableau sur la deuxième.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    # --- Slide 1: title shape ---
    slide1 = prs.slides[0]
    title = slide1.shapes.add_auto_shape(ShapeType.RECTANGLE, 40, 40, 640, 80)
    tf = title.add_text_frame("Q1 Results: Executive Summary")
    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_height = 32
    fmt.font_bold = NullableBool.TRUE
    fmt.fill_format.fill_type = FillType.SOLID
    fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 70, 127)

    # --- Slide 2: table ---
    prs.slides.add_empty_slide(prs.layout_slides[0])
    slide2 = prs.slides[1]
    table = slide2.shapes.add_table(40, 40, [200.0, 120.0, 120.0], [40.0, 40.0, 40.0])
    headers = ["Region", "Revenue", "Growth"]
    data = [
        ["North", "$1.2M", "+8%"],
        ["South", "$0.9M", "+4%"],
    ]
    for col, header in enumerate(headers):
        table.rows[0][col].text_frame.text = header
    for row_idx, row_data in enumerate(data):
        for col, cell_text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = cell_text

    prs.save("q1-results.pptx", SaveFormat.PPTX)

print("Saved q1-results.pptx")

Problèmes courants et solutions

ResourceWarning: unclosed Presentation

Vous instanciez Presentation sans bloc with. Utilisez toujours :

with slides.Presentation() as prs:
    ...

AttributeError: __enter__

Si vous voyez cette erreur, vérifiez que vous avez importé aspose.slides_foss (et non aspose.slides). Le nom du paquet sur PyPI est aspose-slides-foss et l’importation à l’exécution est aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX est un membre d’énumération, pas une fonction. Utilisez‑le comme prs.save("file.pptx", SaveFormat.PPTX).


Questions fréquentes

Quelle est la taille de diapositive par défaut ?

Une nouvelle Presentation() crée des diapositives au format standard de 10 × 7,5 pouces (720 × 540 points). La modification de la taille des diapositives n’est pas encore prise en charge dans cette édition.

Puis-je ajouter plus d’une diapositive ?

Oui. Appelez prs.slides.add_empty_slide(prs.layout_slides[0]) pour ajouter une diapositive vierge et y accéder par index :

prs.slides.add_empty_slide(prs.layout_slides[0])
slide2 = prs.slides[1]

Puis-je ouvrir un fichier existant et ajouter des diapositives ?

Oui:

with slides.Presentation("existing.pptx") as prs:
    prs.slides.add_empty_slide(prs.layout_slides[0])
    prs.save("existing.pptx", SaveFormat.PPTX)

Quels formats puis-je enregistrer ?

Seul SaveFormat.PPTX est pris en charge. L’exportation vers PDF, HTML, SVG ou images n’est pas disponible dans cette édition.


Voir aussi

 Français