Apache POI PPT - Présentations de diapositives

Dans le chapitre précédent, vous avez vu comment créer des diapositives vides et comment y ajouter des diapositives. Dans ce chapitre, vous apprendrez comment obtenir la liste des diapositives disponibles et comment créer une diapositive avec différentes dispositions.

Dispositions de diapositives disponibles

Les présentations PowerPoint ont des mises en page de diapositives et vous pouvez choisir la mise en page souhaitée pour modifier une diapositive. Tout d'abord, découvrons la liste de toutes les mises en page de diapositives disponibles.

  • Il existe différents masques de diapositive et dans chaque masque de diapositive, il existe plusieurs dispositions de diapositive.

  • Vous pouvez obtenir la liste des masques de diapositives en utilisant le getSlideMasters() méthode de la XMLSlideShow classe.

  • Vous pouvez obtenir la liste des dispositions de diapositive de chaque masque de diapositive à l'aide du getSlideLayouts() méthode de la XSLFSlideMaster classe.

  • Vous pouvez obtenir le nom de la mise en page de la diapositive à partir de l'objet de mise en page à l'aide du getType() méthode de la XSLFSlideLayout classe.

Note- Toutes ces classes appartiennent au package org.poi.xslf.usermodel .

Vous trouverez ci-dessous le programme complet pour obtenir la liste des mises en page de diapositives disponibles dans le PPT -

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;

public class SlideLayouts {

   public static void main(String args[]) throws IOException {
   
      //create an empty presentation
      XMLSlideShow ppt = new XMLSlideShow();
      System.out.println("Available slide layouts:")
   
      //getting the list of all slide masters
      for(XSLFSlideMaster master : ppt.getSlideMasters()) {
   
         //getting the list of the layouts in each slide master
         for(XSLFSlideLayout layout : master.getSlideLayouts()) {
   
            //getting the list of available slides
            System.out.println(layout.getType());
         } 
      }
   }
}

Enregistrez le code Java ci-dessus sous SlideLayouts.java , puis compilez et exécutez-le à partir de l'invite de commande comme suit -

$javac SlideLayouts.java
$java SlideLayouts

Il se compilera et s'exécutera pour générer la sortie suivante -

Available slide layouts:
TITLE
PIC_TX
VERT_TX
TWO_TX_TWO_OBJ
BLANK
VERT_TITLE_AND_TX
TITLE_AND_CONTENT
TITLE_ONLY
SECTION_HEADER
TWO_OBJ
OBJ_TX

Vous trouverez ci-dessous quelques exemples de dispositions de diapositives disponibles avec MS-Office 360, édition 2013.

Disposition du titre

Créons une diapositive dans un PPT en utilisant la mise en page Titre. Suivez les étapes ci-dessous -

Step 1 - Créez une présentation vide en instanciant le XMLSlideShow classe comme indiqué ci-dessous.

XMLSlideShow ppt = new XMLSlideShow();

Step 2 - Obtenez la liste des masques de diapositives en utilisant le getSlideMasters()méthode. Ensuite, sélectionnez le masque des diapositives souhaité à l'aide de l'index comme indiqué ci-dessous.

XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

Ici, nous obtenons le masque des diapositives par défaut qui se trouve au 0 ème emplacement du tableau des masques des diapositives.

Step 3 - Obtenez la mise en page souhaitée à l'aide du getLayout() méthode de la XSLFSlideMasterclasse. Cette méthode accepte un paramètre dans lequel vous devez passer l'une des variables statiques duSlideLayoutclass, qui représente la mise en page souhaitée. Il existe plusieurs variables dans cette classe où chaque variable représente une disposition de diapositive.

L'extrait de code ci-dessous montre comment créer une mise en page de titre -

XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);

Step 4 - Créez une nouvelle diapositive en passant un objet de mise en page de diapositive en paramètre.

XSLFSlide slide = ppt.createSlide(titleLayout);

Step 5 - Sélectionnez un espace réservé à l'aide du getPlaceholder() méthode de la XSLFSlideclasse. Cette méthode accepte un paramètre entier. En passant0 à cela, vous obtiendrez le XSLFTextShapeobjet, à l'aide duquel vous pouvez accéder à la zone de texte du titre de la diapositive. Définissez le titre à l'aide de la méthode setText () comme indiqué ci-dessous.

XSLFTextShape title1 = slide.getPlaceholder(0);
//setting the title init
title1.setText("Tutorials point");

Vous trouverez ci-dessous le programme complet pour créer une diapositive avec une mise en page Titre dans une présentation -

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.SlideLayout;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class TitleLayout {

   public static void main(String args[]) throws IOException {
   
      //creating presentation
      XMLSlideShow ppt = new XMLSlideShow();	    	
      
      //getting the slide master object
      XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
      
      //get the desired slide layout 
      XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
                                                     
      //creating a slide with title layout
      XSLFSlide slide1 = ppt.createSlide(titleLayout);
      
      //selecting the place holder in it 
      XSLFTextShape title1 = slide1.getPlaceholder(0); 
      
      //setting the title init 
      title1.setText("Tutorials point");
      
      //create a file object
      File file = new File("C://POIPPT//Examples//Titlelayout.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //save the changes in a PPt document
      ppt.write(out);
      System.out.println("slide cretated successfully");
      out.close();  
   }
}

Enregistrez le code Java ci-dessus sous TitleLayout.java, puis compilez-le et exécutez-le à partir de l'invite de commande comme suit -

$javac TitleLayout.java
$java TitleLayout

Il sera compilé et exécuté pour générer la sortie suivante.

slide created successfully

Le document PPT avec la diapositive de mise en page de titre nouvellement ajoutée apparaît comme suit -

Disposition du titre et du contenu

Créons une diapositive dans un PPT en utilisant le titre et la mise en page du contenu. Suivez les étapes ci-dessous.

Step 1 - Créez une présentation vide en instanciant le XMLSlideShow classe comme indiqué ci-dessous.

XMLSlideShow ppt = new XMLSlideShow();

Step 2 - Obtenez la liste des masques de diapositives en utilisant le getSlideMasters()méthode. Sélectionnez le masque des diapositives souhaité à l'aide de l'index comme indiqué ci-dessous.

XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

Ici, nous obtenons le masque des diapositives par défaut qui se trouve au 0ème emplacement du tableau des masques des diapositives.

Step 3 - Obtenez la mise en page souhaitée à l'aide du getLayout() méthode de la XSLFSlideMasterclasse. Cette méthode accepte un paramètre dans lequel vous devez passer l'une des variables statiques duSlideLayoutclasse qui représente la mise en page souhaitée. Il existe plusieurs variables dans cette classe qui représentent les dispositions des diapositives.

L'extrait de code suivant montre comment créer un titre et une mise en page de contenu -

XSLFSlideLayout contentlayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);

Step 4 - Créez une nouvelle diapositive en passant l'objet de mise en page de diapositive en paramètre.

XSLFSlide slide = ppt.createSlide(SlideLayout.TITLE_AND_CONTENT);

Step 5 - Sélectionnez un espace réservé à l'aide du getPlaceholder() méthode de la XSLFSlideclasse. Cette méthode accepte un paramètre entier. En passant1 à cela, vous obtiendrez le XSLFTextShapeobjet, à l'aide duquel vous pouvez accéder à la zone de contenu de la diapositive. Définissez le titre à l'aide de la méthode setText () comme indiqué ci-dessous.

XSLFTextShape title1 = slide1.getPlaceholder(1);
//setting the title init 
title1.setText("Introduction");

Step 6 - Effacez le texte existant dans la diapositive à l'aide du clearText() méthode de la XSLFTextShape classe.

body.clearText();

Step 7 - Ajouter un nouveau paragraphe en utilisant le addNewTextParagraph()méthode. Ajoutez maintenant une nouvelle séquence de texte au paragraphe à l'aide de laaddNewTextRun()méthode. Maintenant, à l'exécution du texte, ajoutez du texte en utilisant lesetText() méthode comme indiqué ci-dessous.

body.addNewTextParagraph().addNewTextRun().setText("this is  my first slide body");

Vous trouverez ci-dessous le programme complet pour créer une diapositive avec une mise en page Titre dans une présentation -

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.SlideLayout;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class TitleAndBodyLayout {
   
   public static void main(String args[]) throws IOException {
   
      //creating presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //getting the slide master object
      XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
      
      //select a layout from specified list
      XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
      
      //creating a slide with title and content layout
      XSLFSlide slide = ppt.createSlide(slidelayout);
      //selection of title place holder
      XSLFTextShape title = slide.getPlaceholder(0);
      
      //setting the title in it
      title.setText("introduction");
      
      //selection of body placeholder
      XSLFTextShape body = slide.getPlaceholder(1);
      
      //clear the existing text in the slide
      body.clearText();
      
      //adding new paragraph
      body.addNewTextParagraph().addNewTextRun().setText("this is  my first slide body");
      
      //create a file object
      File file = new File("contentlayout.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //save the changes in a file
      ppt.write(out);
      System.out.println("slide cretated successfully");
      out.close();                
   }
}

Enregistrez le code Java ci-dessus sous TitleLayout.java, puis compilez et exécutez-le à partir de l'invite de commande comme suit -

$javac TitleLayout.java
$java TitleLayout

Il se compilera et s'exécutera pour générer la sortie suivante -

slide created successfully

Le document PPT avec la diapositive de mise en page de titre nouvellement ajoutée apparaît comme suit -

De la même manière, vous pouvez également créer des diapositives avec différentes mises en page.