Apache POI PPT - Layout diapositiva

Nel capitolo precedente, hai visto come creare diapositive vuote e come aggiungervi diapositive. In questo capitolo imparerai come ottenere l'elenco delle diapositive disponibili e come creare una diapositiva con layout diversi.

Layout diapositiva disponibili

Le presentazioni di PowerPoint dispongono di layout diapositiva e puoi scegliere un layout desiderato per modificare una diapositiva. Prima di tutto, cerchiamo di scoprire l'elenco di tutti i layout di diapositiva disponibili.

  • Esistono diversi schemi diapositiva e in ogni schema diapositiva sono presenti diversi layout diapositiva.

  • Puoi ottenere l'elenco degli schemi diapositiva utilizzando il file getSlideMasters() metodo del XMLSlideShow classe.

  • Puoi ottenere l'elenco dei layout delle diapositive da ogni schema diapositiva utilizzando il file getSlideLayouts() metodo del XSLFSlideMaster classe.

  • È possibile ottenere il nome del layout diapositiva dall'oggetto layout utilizzando il file getType() metodo del XSLFSlideLayout classe.

Note- Tutte queste classi appartengono al pacchetto org.poi.xslf.usermodel .

Di seguito è riportato il programma completo per ottenere l'elenco dei layout di diapositiva disponibili nel 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());
         } 
      }
   }
}

Salva il codice Java sopra come SlideLayouts.java , quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac SlideLayouts.java
$java SlideLayouts

Verrà compilato ed eseguito per generare il seguente output:

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

Di seguito sono riportati alcuni dei layout di diapositiva di esempio disponibili con MS-Office 360, edizione 2013.

Layout del titolo

Creiamo una diapositiva in un PPT utilizzando il layout del titolo. Segui i passaggi indicati di seguito:

Step 1 - Crea una presentazione vuota istanziando il file XMLSlideShow classe come mostrato di seguito.

XMLSlideShow ppt = new XMLSlideShow();

Step 2 - Ottieni l'elenco degli schemi diapositiva utilizzando il file getSlideMasters()metodo. Successivamente, selezionare lo schema diapositiva desiderato utilizzando l'indice come mostrato di seguito.

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

Qui stiamo ottenendo lo schema diapositiva predefinito che si trova nella posizione 0 ° dell'array master diapositiva.

Step 3 - Ottieni il layout desiderato utilizzando il file getLayout() metodo del XSLFSlideMasterclasse. Questo metodo accetta un parametro in cui devi passare una delle variabili statiche del fileSlideLayoutclass, che rappresenta il nostro layout desiderato. Esistono diverse variabili in questa classe in cui ogni variabile rappresenta un layout di diapositiva.

Lo snippet di codice riportato di seguito mostra come creare un layout del titolo:

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

Step 4 - Crea una nuova diapositiva passando un oggetto layout diapositiva come parametro.

XSLFSlide slide = ppt.createSlide(titleLayout);

Step 5 - Seleziona un segnaposto utilizzando il getPlaceholder() metodo del XSLFSlideclasse. Questo metodo accetta un parametro intero. Passando0 ad esso, otterrai il file XSLFTextShapeoggetto, utilizzando il quale è possibile accedere all'area di testo del titolo della diapositiva. Impostare il titolo utilizzando il metodo setText () come mostrato di seguito.

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

Di seguito è riportato il programma completo per creare una diapositiva con layout del titolo in una presentazione -

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();  
   }
}

Salva il codice Java sopra come TitleLayout.java, quindi compilalo ed eseguilo dal prompt dei comandi come segue:

$javac TitleLayout.java
$java TitleLayout

Verrà compilato ed eseguito per generare il seguente output.

slide created successfully

Il documento PPT con la diapositiva del layout del titolo appena aggiunta appare come segue:

Titolo e layout del contenuto

Creiamo una diapositiva in un PPT utilizzando il titolo e il layout del contenuto. Segui i passaggi indicati di seguito.

Step 1 - Crea una presentazione vuota istanziando il file XMLSlideShow classe come mostrato di seguito.

XMLSlideShow ppt = new XMLSlideShow();

Step 2 - Ottieni l'elenco degli schemi diapositiva utilizzando il file getSlideMasters()metodo. Selezionare lo schema diapositiva desiderato utilizzando l'indice come mostrato di seguito.

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

Qui stiamo ottenendo lo schema diapositiva predefinito che si trova nella posizione 0 ° dell'array master diapositiva.

Step 3 - Ottieni il layout desiderato utilizzando il file getLayout() metodo del XSLFSlideMasterclasse. Questo metodo accetta un parametro in cui devi passare una delle variabili statiche del fileSlideLayoutclasse che rappresenta il nostro layout desiderato. Esistono diverse variabili in questa classe che rappresentano i layout delle diapositive.

Il frammento di codice seguente mostra come creare il titolo e il layout del contenuto:

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

Step 4 - Crea una nuova diapositiva passando l'oggetto layout diapositiva come parametro.

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

Step 5 - Seleziona un segnaposto utilizzando il getPlaceholder() metodo del XSLFSlideclasse. Questo metodo accetta un parametro intero. Passando1 ad esso, otterrai il file XSLFTextShapeoggetto, utilizzando il quale è possibile accedere all'area del contenuto della diapositiva. Impostare il titolo utilizzando il metodo setText () come mostrato di seguito.

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

Step 6 - Cancella il testo esistente nella diapositiva utilizzando il clearText() metodo del XSLFTextShape classe.

body.clearText();

Step 7 - Aggiungi un nuovo paragrafo utilizzando il addNewTextParagraph()metodo. Ora aggiungi una nuova sequenza di testo al paragrafo usando iladdNewTextRun()metodo. Ora alla sequenza di testo, aggiungi il testo usando ilsetText() metodo come mostrato di seguito.

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

Di seguito è riportato il programma completo per creare una diapositiva con layout del titolo in una presentazione -

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();                
   }
}

Salva il codice Java sopra come TitleLayout.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac TitleLayout.java
$java TitleLayout

Verrà compilato ed eseguito per generare il seguente output:

slide created successfully

Il documento PPT con la diapositiva del layout del titolo appena aggiunta appare come segue:

Allo stesso modo, puoi anche creare diapositive con layout diversi.