Enregistrer la présentation

Aperçu

La classe Presentation contient le contenu d’une présentation. Que vous créiez une présentation à partir de zéro ou que vous modifiez une présentation existante, une fois terminé, vous souhaitez enregistrer la présentation. Avec Aspose.Slides pour PHP via Java, elle peut être enregistrée en tant que fichier ou flux. Cet article explique comment enregistrer une présentation de différentes manières :

Enregistrer la présentation dans un fichier

Enregistrez une présentation dans un fichier en appelant la méthode Save de la classe Presentation. Il suffit de passer le nom de fichier et le SaveFormat à la méthode Save.

Les exemples suivants montrent comment enregistrer une présentation avec Aspose.Slides pour PHP via Java.

  # Instancier un objet Presentation représentant un fichier PPT
  $pres = new Presentation();
  try {
    # ...faire un travail ici...
    # Enregistrer votre présentation dans un fichier
    $pres->save("demoPass.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Enregistrer la présentation dans un flux

Il est possible d’enregistrer une présentation dans un flux en passant un flux de sortie à la méthode Save de la classe Presentation. Il existe plusieurs types de flux dans lesquels une présentation peut être enregistrée. Dans l’exemple ci-dessous, nous avons créé un nouveau fichier de présentation, ajouté du texte dans une forme et enregistré la présentation dans le flux.

  # Instancier un objet Presentation représentant un fichier PPT
  $pres = new Presentation();
  try {
    $shape = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 200, 200);
    # Ajouter du texte à la forme
    $shape->getTextFrame()->setText("Cette démo montre comment créer un fichier PowerPoint et l'enregistrer dans un flux.");
    $os = new Java("java.io.FileOutputStream", "Save_As_Stream_out.pptx");
    $pres->save($os, SaveFormat::Pptx);
    $os->close();
  } catch (JavaException $e) {
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Enregistrer la présentation avec un type de vue prédéfini

Aspose.Slides pour PHP via Java offre la possibilité de définir le type de vue pour la présentation générée lorsqu’elle est ouverte dans PowerPoint via la classe ViewProperties. La propriété setLastView est utilisée pour définir le type de vue en utilisant l’énumérateur ViewType.

  # Ouverture du fichier de présentation
  $pres = new Presentation();
  try {
    # Définir le type de vue
    $pres->getViewProperties()->setLastView(ViewType::SlideMasterView);
    # Enregistrer la présentation
    $pres->save("newDemo.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Enregistrer des présentations au format strict Office Open XML

Aspose.Slides vous permet d’enregistrer la présentation au format strict Office Open XML. À cette fin, il fournit la classe PptxOptions dans laquelle vous pouvez définir la propriété Conformance lors de l’enregistrement du fichier de présentation. Si vous définissez sa valeur comme Conformance.Iso29500_2008_Strict, alors le fichier de présentation de sortie sera enregistré au format strict Open XML.

Le code d’exemple suivant crée une présentation et l’enregistre au format strict Office Open XML. Lors de l’appel à la méthode Save pour la présentation, l’objet PptxOptions est passé avec la propriété Conformance définie comme Conformance.Iso29500_2008_Strict.

  # Instancier un objet Presentation représentant un fichier PPT
  $pres = new Presentation();
  try {
    # Obtenir la première diapositive
    $slide = $pres->getSlides()->get_Item(0);
    # Ajouter une autoshape de type ligne
    $slide->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
    # Définir les options d'enregistrement au format strict Office Open XML
    $options = new PptxOptions();
    $options->setConformance(Conformance->Iso29500_2008_Strict);
    # Enregistrer votre présentation dans un fichier
    $pres->save("demoPass.pptx", SaveFormat::Pptx, $options);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

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

Un fichier Office Open XML est une archive ZIP qui a une limite de 4 Go (2^32 octets) sur la taille non compressée d’un fichier, la taille compressée d’un fichier et la taille totale de l’archive, ainsi qu’une limite de 65 535 (2^16-1) fichiers dans l’archive. Les extensions de format ZIP64 augmentent les limites à 2^64.

La nouvelle propriété IPptxOptions.Zip64Mode vous permet de choisir quand utiliser les extensions de format ZIP64 pour le fichier Office Open XML enregistré.

Cette propriété fournit les modes suivants :

  • Zip64Mode.IfNecessary signifie que les extensions de format ZIP64 ne seront utilisées que si la présentation dépasse les limitations ci-dessus. C’est le mode par défaut.
  • Zip64Mode.Never signifie que les extensions de format ZIP64 ne seront pas utilisées.
  • Zip64Mode.Always signifie que les extensions de format ZIP64 seront toujours utilisées.

Le code suivant montre comment enregistrer la présentation au format PPTX avec les extensions de format ZIP64 :

  $pres = new Presentation("Sample.pptx");
  try {
    $pptxOptions = new PptxOptions();
    $pptxOptions->setZip64Mode(Zip64Mode::Always);
    
    $pres->save("Sample-zip64.pptx", SaveFormat::Pptx, $pptxOptions);
  } finally {
    $pres->dispose();
  }

Enregistrer les mises à jour de progression en pourcentage

Une nouvelle interface IProgressCallback a été ajoutée à l’interface ISaveOptions et à la classe abstraite SaveOptions . L’interface IProgressCallback représente un objet de rappel pour enregistrer les mises à jour de progression en pourcentage.

Les extraits de code suivants montrent comment utiliser l’interface IProgressCallback :

  class ExportProgressHandler {
    function reporting($progressValue) {
      # Utiliser ici la valeur de pourcentage de progression
      $progress = java("java.lang.Double")->valueOf($progressValue)->intValue();
      echo($progress . "% fichier converti");
    }
  }

  # Ouverture du fichier de présentation
  $pres = new Presentation("ConvertToPDF.pptx");
  try {
    $saveOptions = new PdfOptions();
    $progressHandler = java_closure(new ExportProgressHandler(), null, java("com.aspose.slides.IProgressCallback"));
    $saveOptions->setProgressCallback($progressHandler);
    $pres->save("ConvertToPDF.pdf", SaveFormat::Pdf, $saveOptions);
  } finally {
    $pres->dispose();
  }