Apache POI PPT: diseños de diapositivas

En el capítulo anterior, ha visto cómo crear diapositivas vacías y cómo agregarle diapositivas. En este capítulo, aprenderá cómo obtener la lista de diapositivas disponibles y cómo crear una diapositiva con diferentes diseños.

Diseños de diapositivas disponibles

Las presentaciones de PowerPoint tienen diseños de diapositiva y puede elegir el diseño que desee para editar una diapositiva. En primer lugar, averigüemos la lista de todos los diseños de diapositivas disponibles.

  • Hay diferentes patrones de diapositivas y en cada patrón de diapositivas, hay varios diseños de diapositivas.

  • Puede obtener la lista de los patrones de diapositivas utilizando el getSlideMasters() método del XMLSlideShow clase.

  • Puede obtener la lista de diseños de diapositivas de cada patrón de diapositivas utilizando el getSlideLayouts() método del XSLFSlideMaster clase.

  • Puede obtener el nombre del diseño de la diapositiva del objeto de diseño utilizando el getType() método del XSLFSlideLayout clase.

Note- Todas estas clases pertenecen al paquete org.poi.xslf.usermodel .

A continuación se muestra el programa completo para obtener la lista de diseños de diapositivas disponibles en el 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());
         } 
      }
   }
}

Guarde el código Java anterior como SlideLayouts.java , y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera:

$javac SlideLayouts.java
$java SlideLayouts

Se compilará y ejecutará para generar la siguiente salida:

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

A continuación se muestran algunos de los diseños de diapositivas de muestra disponibles con MS-Office 360, edición 2013.

Diseño de título

Creemos una diapositiva en un PPT usando el diseño de Título. Siga los pasos que se indican a continuación:

Step 1 - Cree una presentación vacía instanciando el XMLSlideShow clase como se muestra a continuación.

XMLSlideShow ppt = new XMLSlideShow();

Step 2 - Obtenga la lista de patrones de diapositivas usando el getSlideMasters()método. A continuación, seleccione el patrón de diapositivas deseado utilizando el índice como se muestra a continuación.

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

Aquí obtenemos el patrón de diapositivas predeterminado que se encuentra en la ubicación de la matriz de patrones de diapositivas.

Step 3 - Obtenga el diseño deseado usando el getLayout() método del XSLFSlideMasterclase. Este método acepta un parámetro en el que debe pasar una de las variables estáticas delSlideLayoutclass, que representa nuestro diseño deseado. Hay varias variables en esta clase donde cada variable representa un diseño de diapositiva.

El fragmento de código que se muestra a continuación muestra cómo crear un diseño de título:

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

Step 4 - Cree una nueva diapositiva pasando un objeto de diseño de diapositiva como parámetro.

XSLFSlide slide = ppt.createSlide(titleLayout);

Step 5 - Seleccione un marcador de posición con el getPlaceholder() método del XSLFSlideclase. Este método acepta un parámetro de número entero. Pasando0 a él, obtendrá el XSLFTextShapeobjeto, mediante el cual puede acceder al área de texto del título de la diapositiva. Establezca el título usando el método setText () como se muestra a continuación.

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

A continuación se muestra el programa completo para crear una diapositiva con diseño de título en una presentación:

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

Guarde el código Java anterior como TitleLayout.java, y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera:

$javac TitleLayout.java
$java TitleLayout

Se compilará y ejecutará para generar la siguiente salida.

slide created successfully

El documento PPT con la diapositiva de diseño de título recién agregada aparece de la siguiente manera:

Diseño de título y contenido

Creemos una diapositiva en un PPT usando Título y diseño de contenido. Siga los pasos que se indican a continuación.

Step 1 - Cree una presentación vacía instanciando el XMLSlideShow clase como se muestra a continuación.

XMLSlideShow ppt = new XMLSlideShow();

Step 2 - Obtenga la lista de patrones de diapositivas usando el getSlideMasters()método. Seleccione el patrón de diapositivas deseado usando el índice como se muestra a continuación.

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

Aquí obtenemos el patrón de diapositivas predeterminado que se encuentra en la ubicación 0 de la matriz de patrones de diapositivas.

Step 3 - Obtenga el diseño deseado usando el getLayout() método del XSLFSlideMasterclase. Este método acepta un parámetro en el que debe pasar una de las variables estáticas delSlideLayoutclase que representa nuestro diseño deseado. Hay varias variables en esta clase que representan diseños de diapositivas.

El siguiente fragmento de código muestra cómo crear un título y un diseño de contenido:

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

Step 4 - Cree una nueva diapositiva pasando el objeto de diseño de diapositiva como parámetro.

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

Step 5 - Seleccione un marcador de posición con el getPlaceholder() método del XSLFSlideclase. Este método acepta un parámetro de número entero. Pasando1 a él, obtendrá el XSLFTextShapeobjeto, mediante el cual puede acceder al área de contenido de la diapositiva. Establezca el título usando el método setText () como se muestra a continuación.

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

Step 6 - Borre el texto existente en la diapositiva usando el clearText() método del XSLFTextShape clase.

body.clearText();

Step 7 - Agregue un nuevo párrafo usando el addNewTextParagraph()método. Ahora agregue un nuevo texto al párrafo usando eladdNewTextRun()método. Ahora, a la ejecución de texto, agregue texto usando elsetText() método como se muestra a continuación.

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

A continuación se muestra el programa completo para crear una diapositiva con diseño de título en una presentación:

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

Guarde el código Java anterior como TitleLayout.java, y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera:

$javac TitleLayout.java
$java TitleLayout

Se compilará y ejecutará para generar la siguiente salida:

slide created successfully

El documento PPT con la diapositiva de diseño de título recién agregada aparece de la siguiente manera:

De la misma manera, también puede crear diapositivas con diferentes diseños.