Enregistrer des présentations en Python

Vue d’ensemble

Après avoir créé une présentation ou ouvrir une présentation existante, utilisez la méthode Presentation.save pour enregistrer le résultat. Aspose.Slides for Python via .NET peut enregistrer une présentation dans un fichier ou un flux aux formats PowerPoint, OpenDocument, PDF et d’autres formats. Les sections suivantes couvrent les opérations d’enregistrement standard et les options disponibles pour la sortie PPTX.

Enregistrer les présentations dans des fichiers

Pour enregistrer une présentation dans un fichier, transmettez le chemin de sortie et une valeur SaveFormat à la méthode Presentation.save. La valeur du format détermine le type de fichier créé par Aspose.Slides.

L’exemple suivant crée une présentation et l’enregistre au format PPTX :

import aspose.slides as slides

with slides.Presentation() as presentation:
    # Ajouter ou modifier le contenu de la présentation ici.

    presentation.save("Output.pptx", slides.export.SaveFormat.PPTX)

Enregistrer les présentations dans leur format d’origine

Pour les exemples de détection de fichier et de flux, le comportement des présentations nouvellement créées et la distinction entre les formats source et de sortie, consultez Determine the Original Presentation Format.

Dans une application de traitement par lots, le format d’entrée peut ne pas être connu à l’avance. Après avoir chargé un fichier, lisez son format d’origine à partir de la propriété Presentation.source_format. Transmettez la valeur SourceFormat ainsi obtenue à SlideUtil.to_save_format pour obtenir la valeur SaveFormat correspondante, puis utilisez Presentation.save pour écrire la présentation modifiée.

L’exemple complet suivant traite chaque fichier d’un répertoire d’entrée, met à jour son titre et l’enregistre dans un répertoire de sortie au même format que celui d’origine :

from pathlib import Path

import aspose.slides as slides
from aspose.slides.util import SlideUtil

input_directory = Path("Input")
output_directory = Path("Output")

output_directory.mkdir(exist_ok=True)

for input_path in input_directory.iterdir():
    if not input_path.is_file():
        continue

    try:
        with slides.Presentation(str(input_path)) as presentation:
            source_format = presentation.source_format
            save_format = SlideUtil.to_save_format(source_format)

            presentation.document_properties.title = "Processed by the batch application"

            output_path = output_directory / input_path.name
            presentation.save(str(output_path), save_format)
    except Exception as exception:
        print(f"Cannot process '{input_path}': {exception}")

SlideUtil.to_save_format associe PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP et PowerPoint XML à leurs formats d’enregistrement correspondants. Il ne mappe que les formats source de présentation ; il ne doit pas être utilisé pour sélectionner des formats d’exportation tels que PDF, HTML, TIFF ou images. Fournir une valeur SourceFormat non prise en charge ou invalide déclenche une exception.

Les fichiers PPT, PPS et POT hérités utilisent le même conteneur binaire. Lorsqu’une telle présentation est chargée à partir d’un flux sans extension de fichier, un fichier PPS ou POT peut alors être identifié comme PPT. Si la conservation de ces sous‑types hérités est requise, conservez séparément le nom de fichier ou les métadonnées de format d’origine et utilisez‑les lors du choix du nom de fichier et du format de sortie.

Enregistrer les présentations dans des flux

Pour écrire une présentation sans recourir à un chemin de fichier final, transmettez un flux BinaryIO accessible en écriture et une valeur SaveFormat à la méthode Presentation.save. Cette approche est utile lorsque la sortie doit être renvoyée depuis un service Web, stockée dans une base de données ou traitée en mémoire.

L’exemple suivant enregistre une nouvelle présentation dans un flux de fichier :

import aspose.slides as slides

with slides.Presentation() as presentation:
    with open("Output.pptx", "wb") as output_stream:
        presentation.save(output_stream, slides.export.SaveFormat.PPTX)

Enregistrer les présentations avec un type de vue prédéfini

Vous pouvez spécifier la vue dans laquelle PowerPoint ouvre initialement une présentation enregistrée. Définissez la propriété ViewProperties.last_view sur une valeur ViewType avant l’enregistrement.

L’exemple suivant configure la vue Masque des diapositives comme vue initiale :

import aspose.slides as slides

with slides.Presentation() as presentation:
    presentation.view_properties.last_view = slides.ViewType.SLIDE_MASTER_VIEW
    presentation.save("SlideMasterView.pptx", slides.export.SaveFormat.PPTX)

Enregistrer les présentations au format Office Open XML strict

Pour créer un fichier PPTX conforme au profil Strict d’Office Open XML, créez une instance de PptxOptions et définissez sa propriété conformance sur Conformance.ISO_29500_2008_STRICT. Transmettez ensuite les options à la méthode Presentation.save.

import aspose.slides as slides

options = slides.export.PptxOptions()
options.conformance = slides.export.Conformance.ISO_29500_2008_STRICT

with slides.Presentation() as presentation:
    presentation.save("StrictOfficeOpenXml.pptx", slides.export.SaveFormat.PPTX, options)

Enregistrer les présentations au format Office Open XML en mode Zip64

Une archive ZIP standard limite la taille compressée et non compressée de chaque entrée, la taille totale de l’archive et le nombre d’entrées. Comme un fichier PPTX est une archive ZIP, une présentation très volumineuse peut dépasser ces limites. Les extensions ZIP64 augmentent les limites de taille et de nombre d’entrées applicables.

Utilisez la propriété PptxOptions.zip_64_mode pour contrôler si Aspose.Slides écrit les extensions ZIP64 :

  • IF_NECESSARY utilise ZIP64 uniquement lorsque la présentation dépasse les limites ZIP standard. C’est le mode par défaut.
  • NEVER désactive les extensions ZIP64.
  • ALWAYS écrit toujours les extensions ZIP64.

L’exemple suivant active toujours les extensions ZIP64 pour la présentation de sortie :

import aspose.slides as slides

with slides.Presentation("Sample.pptx") as presentation:
    options = slides.export.PptxOptions()
    options.zip_64_mode = slides.export.Zip64Mode.ALWAYS

    presentation.save("OutputZip64.pptx", slides.export.SaveFormat.PPTX, options)

Enregistrer les présentations au format Office Open XML avec des niveaux de compression

Pour la sortie PPTX, vous pouvez équilibrer la vitesse d’enregistrement et la taille du fichier en définissant la propriété PptxOptions.compression_level. L’énumération CompressionLevel propose les valeurs suivantes :

  • NONE stocke les données sans compression.
  • LEVEL1 offre la compression la plus rapide et le fichier compressé le plus volumineux.
  • LEVEL2 à LEVEL5 favorisent progressivement une taille de sortie plus petite au détriment de la vitesse d’enregistrement.
  • LEVEL6 équilibre vitesse d’enregistrement et taille du fichier. C’est le niveau par défaut.
  • LEVEL7 et LEVEL8 privilégient davantage une taille de sortie réduite.
  • LEVEL9 fournit la compression la plus forte et nécessite le plus de temps de traitement.

L’exemple suivant enregistre une présentation sans compression :

import aspose.slides as slides

with slides.Presentation("Sample.pptx") as presentation:
    options = slides.export.PptxOptions()
    options.compression_level = slides.export.CompressionLevel.NONE

    presentation.save("OutputNoCompression.pptx", slides.export.SaveFormat.PPTX, options)

L’exemple suivant utilise le niveau de compression maximal :

import aspose.slides as slides

with slides.Presentation("Sample.pptx") as presentation:
    options = slides.export.PptxOptions()
    options.compression_level = slides.export.CompressionLevel.LEVEL9

    presentation.save("OutputMaximumCompression.pptx", slides.export.SaveFormat.PPTX, options)

Enregistrer les présentations sans actualiser la vignette

Lorsque une présentation est enregistrée au format PPTX, la propriété PptxOptions.refresh_thumbnail contrôle la vignette du document :

  • True régénère la vignette pendant l’opération d’enregistrement. C’est la valeur par défaut.
  • False conserve la vignette existante. Si la présentation ne possède pas de vignette, Aspose.Slides n’en crée pas.

L’exemple suivant enregistre une présentation sans actualiser sa vignette :

import aspose.slides as slides

with slides.Presentation("Sample.pptx") as presentation:
    options = slides.export.PptxOptions()
    options.refresh_thumbnail = False

    presentation.save("Output.pptx", slides.export.SaveFormat.PPTX, options)

FAQ

Aspose.Slides prend‑il en charge l’enregistrement incrémentiel ou le « fast save » ?

Non. Chaque opération d’enregistrement écrit un fichier complet plutôt que de mettre à jour uniquement les parties modifiées.

Plusieurs threads peuvent‑ils enregistrer la même instance de Presentation ?

Non. Une instance de Presentation n’est pas thread‑safe (/slides/fr/python-net/multithreading/). Accédez et enregistrez chaque instance depuis un seul thread à la fois.

Que se passe‑t‑il avec les hyperliens et les fichiers liés externement lors de l’enregistrement d’une présentation ?

Les hyperliens restent dans la présentation. Aspose.Slides ne copie pas les fichiers liés externement, de sorte que la présentation enregistrée doit toujours pouvoir accéder à leurs emplacements.

Puis‑je enregistrer les métadonnées du document telles que l’auteur, le titre, l’entreprise et la date de création ?

Oui. Définissez les propriétés du document appropriées avant l’enregistrement, et Aspose.Slides les écrit dans le fichier de sortie.