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.