Apache POI PPT - Layouts de slides

No capítulo anterior, você viu como criar slides vazios e como adicionar slides a eles. Neste capítulo, você aprenderá como obter a lista de slides disponíveis e como criar um slide com diferentes layouts.

Layouts de slides disponíveis

As apresentações do PowerPoint têm layouts de slide e você pode escolher um layout desejado para editar um slide. Em primeiro lugar, vamos descobrir a lista de todos os layouts de slides disponíveis.

  • Existem diferentes slides mestre e em cada slide mestre, existem vários layouts de slide.

  • Você pode obter a lista dos slides mestre usando o getSlideMasters() método do XMLSlideShow classe.

  • Você pode obter a lista de layouts de slide de cada slide mestre usando o getSlideLayouts() método do XSLFSlideMaster classe.

  • Você pode obter o nome do layout do slide a partir do objeto de layout usando o getType() método do XSLFSlideLayout classe.

Note- Todas essas classes pertencem ao pacote org.poi.xslf.usermodel .

A seguir está o programa completo para obter a lista de layouts de slides disponíveis no 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());
         } 
      }
   }
}

Salve o código Java acima como SlideLayouts.java e, em seguida, compile e execute-o no prompt de comando da seguinte maneira -

$javac SlideLayouts.java
$java SlideLayouts

Ele irá compilar e executar para gerar a seguinte saída -

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

Abaixo estão alguns dos exemplos de layouts de slides disponíveis no MS-Office 360, edição 2013.

Layout do título

Vamos criar um slide em um PPT usando o layout de título. Siga as etapas abaixo -

Step 1 - Crie uma apresentação vazia instanciando o XMLSlideShow classe como mostrado abaixo.

XMLSlideShow ppt = new XMLSlideShow();

Step 2 - Obtenha a lista de slides mestre usando o getSlideMasters()método. Depois disso, selecione o slide mestre desejado usando o índice conforme mostrado abaixo.

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

Aqui estamos recebendo o slide mestre padrão que está no 0 th localização da matriz slides mestres.

Step 3 - Obtenha o layout desejado usando o getLayout() método do XSLFSlideMasterclasse. Este método aceita um parâmetro onde você tem que passar uma das variáveis ​​estáticas doSlideLayoutclass, que representa nosso layout desejado. Existem várias variáveis ​​nesta classe, onde cada variável representa um layout de slide.

O snippet de código fornecido abaixo mostra como criar um layout de título -

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

Step 4 - Crie um novo slide passando um objeto de layout de slide como parâmetro.

XSLFSlide slide = ppt.createSlide(titleLayout);

Step 5 - Selecione um espaço reservado usando o getPlaceholder() método do XSLFSlideclasse. Este método aceita um parâmetro inteiro. Passando0 para isso, você obterá o XSLFTextShapeobjeto, usando o qual você pode acessar a área de texto do título do slide. Defina o título usando o método setText () conforme mostrado abaixo.

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

A seguir está o programa completo para criar um slide com layout de título em uma apresentação -

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

Salve o código Java acima como TitleLayout.java e, em seguida, compile e execute-o no prompt de comando da seguinte maneira -

$javac TitleLayout.java
$java TitleLayout

Ele irá compilar e executar para gerar a seguinte saída.

slide created successfully

O documento PPT com o slide de layout de título recém-adicionado aparece da seguinte forma -

Layout de título e conteúdo

Vamos criar um slide em um PPT usando Título e layout de conteúdo. Siga as etapas fornecidas abaixo.

Step 1 - Crie uma apresentação vazia instanciando o XMLSlideShow classe como mostrado abaixo.

XMLSlideShow ppt = new XMLSlideShow();

Step 2 - Obtenha a lista de slides mestre usando o getSlideMasters()método. Selecione o slide mestre desejado usando o índice conforme mostrado abaixo.

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

Aqui estamos obtendo o slide mestre padrão que está no 0º local da matriz de slides mestre.

Step 3 - Obtenha o layout desejado usando o getLayout() método do XSLFSlideMasterclasse. Este método aceita um parâmetro onde você tem que passar uma das variáveis ​​estáticas doSlideLayoutclasse que representa nosso layout desejado. Existem várias variáveis ​​nesta classe que representam layouts de slide.

O seguinte snippet de código mostra como criar um título e layout de conteúdo -

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

Step 4 - Crie um novo slide passando o objeto de layout do slide como parâmetro.

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

Step 5 - Selecione um espaço reservado usando o getPlaceholder() método do XSLFSlideclasse. Este método aceita um parâmetro inteiro. Passando1 para isso, você obterá o XSLFTextShapeobjeto, com o qual você pode acessar a área de conteúdo do slide. Defina o título usando o método setText () conforme mostrado abaixo.

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

Step 6 - Limpe o texto existente no slide usando o clearText() método do XSLFTextShape classe.

body.clearText();

Step 7 - Adicione um novo parágrafo usando o addNewTextParagraph()método. Agora adicione uma nova sequência de texto ao parágrafo usando oaddNewTextRun()método. Agora, para a execução do texto, adicione texto usando osetText() método conforme mostrado abaixo.

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

A seguir está o programa completo para criar um slide com layout de título em uma apresentação -

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

Salve o código Java acima como TitleLayout.javae, em seguida, compile e execute-o no prompt de comando da seguinte maneira -

$javac TitleLayout.java
$java TitleLayout

Ele irá compilar e executar para gerar a seguinte saída -

slide created successfully

O documento PPT com o slide de layout de título recém-adicionado aparece da seguinte forma -

Da mesma forma, você também pode criar slides com layouts diferentes.