Apache POI PPT - Guia rápido

Muitas vezes, um aplicativo de software é necessário para gerar relatórios no formato de arquivo do Microsoft Office. Às vezes, espera-se até que um aplicativo receba arquivos do MS-Office como dados de entrada.

Qualquer programador Java que deseja produzir arquivos do MS Office como saída deve usar uma API predefinida e somente leitura para fazer isso.

O que é Apache POI?

Apache POI é uma API popular que permite aos programadores criar, modificar e exibir arquivos do MS-Office usando programas Java. É uma biblioteca de código aberto desenvolvida e distribuída pela Apache Software Foundation. Ele contém classes e métodos para decodificar os dados de entrada do usuário ou um arquivo em documentos do MS Office.

Componentes do Apache POI

O Apache POI contém classes e métodos para trabalhar em todos os documentos compostos OLE2 do MS-Office. A lista de componentes desta API é fornecida abaixo -

  • POIFS (Poor Obfuscation Implementation File System)- Este componente é o fator básico de todos os outros elementos POI. É usado para ler diferentes arquivos explicitamente.

  • HSSF (Horrible SpreadSheet Format) - É usado para ler e escrever no formato .xls de arquivos MS-Excel.

  • XSSF (XML SpreadSheet Format) - É usado para o formato de arquivo .xlsx do MS-Excel.

  • HPSF (Horrible Property Set Format) - É usado para extrair conjuntos de propriedades dos arquivos do MS-Office.

  • HWPF (Horrible Word Processor Format) - É usado para ler e escrever .doc arquivos de extensão do MS-Word.

  • XWPF (XML Word Processor Format) - É usado para ler e escrever arquivos de extensão .docx do MS-Word.

  • HSLF (Horrible Slide Layout Format) - É usado para ler, criar e editar apresentações do PowerPoint.

  • HDGF (Horrible DiaGram Format) - Contém classes e métodos para arquivos binários do MS-Visio.

  • HPBF (Horrible PuBlisher Format) - É usado para ler e gravar arquivos do MS-Publisher.

Este tutorial o orienta no processo de trabalho em uma apresentação do Microsoft PowerPoint usando Java. Portanto, a discussão se limita aXSLF component.

Note - Versões mais antigas de POI suportam formatos de arquivo binários como doc, xls, ppt, etc. Da versão 3.5 em diante, POI suporta formatos de arquivo OOXML do MS-Office como docx, xlsx, pptx, etc.

Este capítulo o conduz por alguns dos sabores da API Java PowerPoint e seus recursos. Existem muitos fornecedores que fornecem APIs relacionadas a Java PPT; alguns deles são considerados neste capítulo.

Aspose Slides para Java

Aspose slides para Java é uma API Java PPT puramente licenciada, desenvolvida e distribuída pelo fornecedor Aspose. A versão mais recente desta API é 8.1.2, lançada em julho de 2014. É uma API rica e pesada (combinação de classes Java simples e classes AWT) para projetar o componente PPT que pode ler, escrever e gerenciar slides.

Os usos comuns desta API são os seguintes -

  • Crie apresentações dinâmicas
  • Renderize e imprima apresentações de alta fidelidade
  • Gerar, editar, converter e imprimir apresentações

Apache POI

Apache POI é uma biblioteca de código aberto 100% fornecida pela Apache Software Foundation. A maioria dos desenvolvedores de aplicativos de pequena e média escala depende muito do Apache POI (HSLF + XSLF). Ele suporta todos os recursos básicos das bibliotecas PPT; no entanto, renderização e extração de texto são seus principais recursos. A seguir está a arquitetura do Apache POI para PPT.

Este capítulo o conduz pelo processo de configuração do Apache POI em sistemas baseados em Windows e Linux. O Apache POI pode ser facilmente instalado e integrado ao seu ambiente Java atual, seguindo alguns passos simples sem quaisquer procedimentos de configuração complexos. A administração do usuário é necessária para a instalação.

Requisitos de sistema

JDK Java SE 2 JDK 1.5 ou superior
Memória 1 GB de RAM (recomendado)
Espaço em disco Sem requisitos mínimos
Versão do sistema operacional Windows XP ou superior, Linux

Vamos agora prosseguir com as etapas para instalar o Apache POI.

Etapa 1: verifique a instalação do Java

Em primeiro lugar, você precisa ter o Java Software Development Kit (SDK) instalado em seu sistema. Para verificar isso, execute qualquer um dos dois comandos a seguir, dependendo da plataforma em que está trabalhando.

Se a instalação do Java foi feita corretamente, ele exibirá a versão atual e as especificações de sua instalação do Java. Um exemplo de saída é fornecido na tabela a seguir.

Plataforma Comando Saída de amostra
janelas

Abra o console de comando e digite -

\>java –version

Versão Java "1.7.0_60"

Tempo de execução Java (TM) SE

Ambiente (versão 1.7.0_60-b19)

Servidor Java Hotspot (TM) de 64 bits

VM (build 24.60-b09, modo misto)

Linux

Abra o terminal de comando e digite -

$java –version

versão java "1.7.0_25"

Open JDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64)

Abra o servidor VM JDK de 64 bits (compilação 23.7-b01, modo misto)

  • Presumimos que os leitores deste tutorial tenham o Java SDK versão 1.7.0_60 instalado em seus sistemas.

  • Caso você não tenha Java SDK, baixe sua versão atual em https://www.oracle.com/technetwork/java/javase/downloads/index.html e instale-o.

Etapa 2: definir seu ambiente Java

Defina a variável de ambiente JAVA_HOME para apontar para o local do diretório base onde o Java está instalado em sua máquina. Por exemplo,

Plataforma Descrição
janelas Defina JAVA_HOME como C: \ ProgramFiles \ java \ jdk1.7.0_60
Linux Exportar JAVA_HOME = / usr / local / java-current

Anexe o caminho completo do local do compilador Java ao caminho do sistema.

Plataforma Descrição
janelas Anexe a string "C: \ Arquivos de programas \ Java \ jdk1.7.0_60 \ bin" ao final da variável de sistema PATH.
Linux Exportar PATH = $ PATH: $ JAVA_HOME / bin /

Execute o comando java -version no prompt de comando, conforme explicado acima.

Etapa 3: Instale a biblioteca Apache POI

Baixe a versão mais recente do Apache POI de https://poi.apache.org/download.htmle descompacte seu conteúdo para uma pasta de onde as bibliotecas necessárias podem ser vinculadas ao seu programa Java. Vamos supor que os arquivos sejam coletados em uma pasta na unidade C.

As imagens a seguir mostram os diretórios e as estruturas de arquivos dentro da pasta baixada -

Adicione o caminho completo dos cinco jars como destacado na imagem acima para CLASSPATH.

Plataforma Descrição
janelas

Anexe as seguintes strings ao final da variável de usuário CLASSPATH -

“C: \ poi-3.9 \ poi-3.9-20121203.jar;”

“C: \ poi-3.9 \ poi-ooxml-3.9-20121203.jar;”

“C: \ poi-3.9 \ poi-ooxml-schemas-3.9-20121203.jar;”

“C: \ poi-3.9 \ ooxml-lib \ dom4j-1.6.1.jar;”

“C: \ poi-3.9 \ ooxml-lib \ xmlbeans-2.3.0.jar;.;”

Linux

Exportar CLASSPATH = $ CLASSPATH:

/usr/share/poi-3.9/poi-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-schemas-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-3.9-20121203.tar:

/usr/share/poi-3.9/ooxml-lib/dom4j-1.6.1.tar:

/usr/share/poi-3.9/ooxml-lib/xmlbeans-2.3.0.tar

pom.xml

A seguir está o arquivo pom.xml para executar os programas neste tutorial.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>ApachePoiPPT</groupId>
   <artifactId>ApachePoiPPT</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <build>
      <sourceDirectory>src</sourceDirectory>
      <plugins>
         <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
               <source>1.8</source>
               <target>1.8</target>
            </configuration>
         </plugin>
      </plugins>
   </build>
   <dependencies>  
      <dependency>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi</artifactId>
         <version>3.9</version>
      </dependency>
      <dependency>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-ooxml</artifactId>
         <version>3.9</version>
      </dependency>    
   </dependencies>
</project>

Neste capítulo, aprenderemos sobre algumas classes e métodos da API Apache POI que são cruciais para trabalhar em arquivos PPT usando programas Java.

Apresentação

Para criar e gerenciar uma apresentação, você tem uma classe chamada XMLSlideShow no pacote org.apache.poi.xslf.usermodel . A seguir estão alguns métodos importantes e um construtor dessa classe.

Class - XMLSlideShow

Package - org.apache.poi.xslf.usermodel

S.No Construtor e descrição
1

XMLSlideShow(java.io.InputStream inputStream)

Você pode instanciar essa classe passando um objeto de classe inputstream para ela.

S.No Métodos e Descrição
1

int addPicture (byte[] pictureData, int format)

Usando este método, você pode adicionar uma imagem a uma apresentação.

2

XSLFSlide createSlide()

Cria um slide em branco em uma apresentação.

3

XSLFSlide createSlide(XSLFSlideLayout layout)

Cria um slide com um determinado layout de slide.

4

java.util.List <XSLFPictureData> getAllPictures()

Retorna uma matriz de todas as imagens em uma apresentação.

5

java.awt.Dimension getPageSize()

Usando este método, você pode saber o tamanho da página atual.

6

XSLFSlideMaster[] getSlideMasters()

Retorna a matriz de todos os slides em uma apresentação.

7

XSLFSlide[] getSlides()

Retorna todos os slides de uma apresentação.

8

XSLFSlide removeSlide(int index)

Usando este método, você pode remover um slide de uma apresentação.

9

void setPageSize(java.awt.Dimension pgSize)

Usando este método, você pode redefinir o tamanho da página.

10

void setSlideOrder(XSLFSlide slide, int newIndex)

Usando este método, você pode reordenar os slides.

Deslizar

Para criar e gerenciar um slide em uma apresentação, os métodos do XSLFSlideclasse são usados. Alguns métodos importantes desta classe são mencionados abaixo.

Class - XSLFSlide

Package - org.apache.poi.xslf.usermodel

S.No Método e Descrição
1

XSLFBackground getBackground()

Retorna o XSLFBackgroundobjeto que pode ser usado para recuperar detalhes como cor e âncora do plano de fundo do slide. Você também pode desenhar formas no slide usando este objeto.

2

XSLFSlideLayout getSlideLayout()

Fornece acesso ao XSLFSlideLayout objeto do slide atual.

3

XSLFSlideMaster getSlideMaster()

Fornece acesso ao slide mestre do slide atual.

4

XSLFTheme getTheme()

Retorna o XSLFTheme objeto do slide atual.

5

java.lang.String getTitle()

Retorna o título do slide atual.

6

XSLFSlide importContent(XSLFSheet src)

Copia o conteúdo de outro slide para este slide.

Slide mestre

É o componente da apresentação com diferentes layouts de slides. oXSLFSlideMasterclasse dá acesso a ele. Mencionados a seguir são alguns métodos importantes desta classe.

Class - XSLFSlideMaster

Package - org.apache.poi.xslf.usermodel

S.No Método e Descrição
1

XSLFBackground getBackground()

Retorna o plano de fundo comum do slide mestre.

2

XSLFSlideLayout getLayout(SlideLayout type)

Retorna o objeto XSLFSlideLayout.

3

XSLFSlideLayout[] getSlideLayouts()

Retorna todos os layouts de slide neste slide mestre.

Layout de slide

A biblioteca POI tem uma classe chamada XSLFSlideLayout, com o qual você pode gerenciar os layouts de um slide.

Class - XSLFSlideLayout

Package - org.apache.poi.xslf.usermodel

S.No Método e Descrição
1

void copyLayout(XSLFSlide slide)

Este método irá copiar os marcadores de posição deste layout para o slide fornecido.

Parágrafo de Texto

Você pode escrever conteúdo no slide usando XSLFTextParagraphclasse. Abaixo mencionados estão alguns métodos importantes desta classe.

Class - XSLFTextParagraph

Package - org.apache.poi.xslf.usermodel

S.No Método e Descrição
1

XSLFTextRun addLineBreak()

Insere uma quebra de linha em um parágrafo.

2

XSLFTextRun addNewTextRun()

Adiciona uma nova sequência de texto em um parágrafo.

3

void setBulletAutoNumber(ListAutoNumber scheme, int startAt)

Aplica marcadores numerados automaticamente ao parágrafo.

4

void setIndent(double value)

Define o recuo para o texto no parágrafo.

5

void setLeftMargin(double value)

Este método é usado para adicionar a margem esquerda do parágrafo.

6

void setLineSpacing(double linespacing)

Este método é usado para definir o espaçamento entre linhas no parágrafo.

7

void setTextAlign(TextAlign align)

Este método é usado para definir o alinhamento a ser definido para o parágrafo.

Text Run

Este é o nível mais baixo de separação de texto em um corpo de texto. Você temXSLFTextRunclasse para gerenciar a execução do texto de um parágrafo. Abaixo mencionados estão alguns métodos importantes desta classe.

Class - XSLFTextParagraph

Package - org.apache.poi.xslf.usermodel

S.No Método e Descrição
1

XSLFHyperlink createHyperlink()

Cria um hiperlink na apresentação.

2

XSLFHyperlink getHyperlink()

Este método é usado para obter o hiperlink.

3

java.lang.String getText()

Retorna o valor deste nó Text como uma string Java.

4

void setBold(boolean bold)

Este método é usado para definir o texto em negrito.

5

void setCharacterSpacing(double spc)

Define o espaçamento entre os caracteres em uma sequência de texto.

6

void setFontColor(java.awt.Color color)

Define a cor da fonte do texto.

7

void setFontSize(double fontSize)

Define o tamanho da fonte do texto.

8

void setItalic(boolean italic)

Este método é usado para deixar o parágrafo em itálico.

9

void setStrikethrough(boolean strike)

Este método é usado para formatar uma sequência de texto como texto tachado.

10

void setSubscript(boolean flag)

Este método é usado para formatar o texto como subscrito.

11

void setSuperscript(boolean flag)

Este método é usado para formatar o texto nesta execução como sobrescrito.

12

void setText(java.lang.String text)

Este método é usado para definir o texto em uma corrida.

13

void setUnderline(boolean underline)

Este método é usado para sublinhar o texto em uma execução de texto.

Forma de texto

No PPT, temos formas que podem conter texto. Podemos gerenciar isso usandoXSLFTextShapeclasse. Mencionados a seguir são alguns métodos importantes desta classe.

Class - XSLFTextShape

Package - org.apache.poi.xslf.usermodel

S.No Método e Descrição
1

void setPlaceholder(Placeholder placeholder)

Usando este método, você pode escolher um marcador de posição.

2

Placeholder getTextType()

Retorna o tipo do marcador de posição atual.

3

void clearText()

Limpa a área de texto da forma de texto atual.

4

XSLFTextParagraph addNewTextParagraph()

Adiciona uma nova sequência de parágrafo a uma forma.

5

void drawContent(java.awt.Graphics2D graphics)

Este método permite que você desenhe qualquer conteúdo no slide.

HyperLink

A biblioteca POI tem uma classe chamada XSLFHyperlinkusando o qual você pode criar um hiperlink na apresentação. Mencionados a seguir são alguns métodos importantes desta classe.

Class - XSLFHyperlink

Package - org.apache.poi.xslf.usermodel

S.No Método e Descrição
1

java.net.URI getTargetURL()

Retorna o URL existente em um slide da apresentação.

2

void setAddress(java.lang.String address)

Este método é usado para definir o endereço de um URL.

3

void setAddress(XSLFSlide slide)

Define o endereço do URL presente em um slide da apresentação.

Geralmente, usamos o MS-PowerPoint para criar apresentações. Agora vamos ver como criar apresentações usando Java. Após a conclusão deste capítulo, você será capaz de criar novas apresentações do MS-PowerPoint e abrir PPTs existentes com seu programa Java.

Criando uma apresentação vazia

Para criar uma apresentação vazia, você deve instanciar o XMLSlideShowclasse do pacote org.poi.xslf.usermodel -

XMLSlideShow ppt = new XMLSlideShow();

Salve as alterações em um documento PPT usando o FileOutputStream classe -

File file = new File("C://POIPPT//Examples//example1.pptx");
FileOutputStream out = new FileOutputStream(file);
ppt.write(out);

A seguir está o programa completo para criar uma apresentação em branco do MS-PowerPoint.

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

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class CreatePresentation {
   
   public static void main(String args[]) throws IOException {
   
      //creating a new empty slide show
      XMLSlideShow ppt = new XMLSlideShow();	     
      
      //creating an FileOutputStream object
      File file = new File("example1.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //saving the changes to a file
      ppt.write(out);
      System.out.println("Presentation created successfully");
      out.close()
   }
}

Salve o código Java acima como CreatePresentation.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac CreatePresentation.java $java CreatePresentation

Se o ambiente do seu sistema estiver configurado com a biblioteca POI, ele irá compilar e executar para gerar um arquivo PPT em branco chamado example1.pptx em seu diretório atual e exibir a seguinte saída no prompt de comando -

Presentation created successfully

O documento do PowerPoint em branco aparece da seguinte forma -

Editando uma apresentação existente

Para abrir uma apresentação existente, instancie o XMLSlideShow classe e passar no FileInputStream objeto do arquivo a ser editado, como argumento para o XMLSlideShow construtor.

File file = new File(“C://POIPPT//Examples//example1.pptx”);
FileInputstream inputstream = new FileInputStream(file);
XMLSlideShow ppt = new XMLSlideShow(inputstream);

Você pode adicionar slides a uma apresentação usando o createSlide()método da classe XMLSlideShow que está no pacote org.poi.xslf.usermodel .

XSLFSlide slide1 = ppt.createSlide();

A seguir está o programa completo para abrir e adicionar slides a um PPT existente -

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

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class EditPresentation {

   public static void main(String ar[]) throws IOException {
	   
      //opening an existing slide show
      File file = new File("example1.pptx");
      FileInputStream inputstream = new FileInputStream(file);
      XMLSlideShow ppt = new XMLSlideShow(inputstream);
      
      //adding slides to the slodeshow
      XSLFSlide slide1 = ppt.createSlide();
      XSLFSlide slide2 = ppt.createSlide();
      
      //saving the changes 
      FileOutputStream out = new FileOutputStream(file);
      ppt.write(out);
      
      System.out.println("Presentation edited successfully");
      out.close();	
   }
}

Salve o código Java acima como EditPresentation.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac EditPresentation.java $java EditPresentation

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

slides successfully added

O documento PPT de saída com os slides recém-adicionados tem a seguinte aparência -

Depois de adicionar slides a um PPT, você pode adicionar, executar, ler e gravar operações nos 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 .

Abaixo 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, compilar e executá-lo 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 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");

Abaixo 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 o layout de título e 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á na posição 0 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, através do 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");

Abaixo 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, compilar e executá-lo 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.

Depois de concluir este capítulo, você poderá excluir, reordenar e realizar operações de leitura e gravação em um slide.

Alterar um slide

Podemos alterar o tamanho da página de um slide usando o setPageSize() método do XMLSlideShow classe.

Inicialmente, crie uma apresentação conforme mostrado abaixo -

File file = new File("C://POIPPT//Examples// TitleAndContentLayout.pptx");

//create presentation
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));

Obtenha o tamanho do slide atual usando o getPageSize() método do XMLSlideShow classe.

java.awt.Dimension pgsize = ppt.getPageSize();

Defina o tamanho da página usando o setPageSize() método.

ppt.setPageSize(new java.awt.Dimension(1024, 768));

O programa completo para alterar o tamanho de um slide é fornecido abaixo -

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;

public class ChangingSlide {
   
   public static void main(String args[]) throws IOException {

      //create file object
      File file = new File("TitleAndContentLayout.pptx");
	 
      //create presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //getting the current page size
      java.awt.Dimension pgsize = ppt.getPageSize();
      int pgw = pgsize.width; //slide width in points
      int pgh = pgsize.height; //slide height in points
      
      System.out.println("current page size of the PPT is:");
      System.out.println("width :" + pgw);
      System.out.println("height :" + pgh);
      
      //set new page size
      ppt.setPageSize(new java.awt.Dimension(2048,1536));
      
      //creating file object
      FileOutputStream out = new FileOutputStream(file);
      
      //saving the changes to a file
      ppt.write(out);
      System.out.println("slide size changed to given dimentions ");
      out.close();	
   }
}

Salve o código Java acima como ChangingSlide.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac ChangingSlide.java $java ChangingSlide

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

current page size of the presentation is : 
width :720
height :540
slide size changed to given dimensions

Abaixo está o instantâneo da apresentação antes de alterar o tamanho do slide -

O slide aparece da seguinte maneira após alterar seu tamanho -

Reordenando slides

Você pode definir a ordem dos slides usando o setSlideOrder()método. A seguir está o procedimento para definir a ordem dos slides.

Abra um documento PPT existente conforme mostrado abaixo -

File file = new File("C://POIPPT//Examples//example1.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));

Obtenha os slides usando o getSlides() método como mostrado abaixo -

XSLFSlide[] slides = ppt.getSlides();

Selecione um slide da série de slides e altere a ordem usando o setSlideOrder() método como mostrado abaixo -

//selecting the fourth slide
XSLFSlide selectesdslide = slides[4];

//bringing it to the top
ppt.setSlideOrder(selectesdslide, 1);

Abaixo está o programa completo para reordenar os slides em uma apresentação -

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class ReorderSlide {	
   
   public static void main(String args[]) throws IOException {
   
      //opening an existing presentation
      File file = new File("example1.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //get the slides 
      XSLFSlide[] slides = ppt.getSlides();    
      
      //selecting the fourth slide
      XSLFSlide selectesdslide = slides[13];
      
      //bringing it to the top
      ppt.setSlideOrder(selectesdslide, 0);
      
      //creating an file object 
      FileOutputStream out = new FileOutputStream(file);
	  
      //saving the changes to a file
      ppt.write(out);
      out.close();	
   }
}

Salve o código Java acima como ReorderSlide.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac ReorderSlide.java $java ReorderSlide

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

Reordering of the slides is done

Abaixo está o instantâneo da apresentação antes de reorganizar os slides -

Depois de reorganizar os slides, a apresentação aparecerá da seguinte maneira. Aqui, selecionamos o slide com imagem e movemos para o topo.

Excluindo slides

Você pode excluir os slides usando o removeSlide()método. Siga as etapas abaixo para excluir slides.

Abra uma apresentação existente usando o XMLSlideShow classe como mostrado abaixo -

File file = new File("C://POIPPT//Examples//image.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));

Exclua o slide necessário usando o removeSlide()método. Este método aceita um parâmetro inteiro. Passe o índice do slide a ser apagado para este método.

ppt.removeSlide(1);

A seguir está o programa para excluir slides de uma apresentação -

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

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

public class Deleteslide { 
   
   public static void main(String args[]) throws IOException {
   
      //Opening an existing slide
      File file = new File("image.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //deleting a slide
      ppt.removeSlide(1);
      
      //creating a file object
      FileOutputStream out = new FileOutputStream(file);
      
      //Saving the changes to the presentation
      ppt.write(out);
      out.close();	
   }
}

Salve o código Java acima como Deleteslide.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac Deleteslide.java $java Deleteslide

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

reordering of the slides is done

O instantâneo abaixo é da apresentação antes de excluir o slide -

Depois de excluir o slide, a apresentação aparece da seguinte maneira -

Neste capítulo, você aprenderá como adicionar uma imagem a um PPT e como ler uma imagem dele.

Adicionando Imagem

Você pode adicionar imagens a uma apresentação usando o createPicture() método de XSLFSlide. Este método aceita imagem na forma de formato de matriz de bytes. Portanto, você deve criar uma matriz de bytes da imagem a ser adicionada à apresentação.

Siga o procedimento fornecido para adicionar uma imagem a uma apresentação. Crie uma apresentação de slides vazia usandoXMLSlideShow como mostrado abaixo -

XMLSlideShow ppt = new XMLSlideShow();

Crie uma apresentação vazia usando createSlide().

XSLFSlide slide = ppt.createSlide();

Leia o arquivo de imagem a ser adicionado e converta-o em uma matriz de bytes usando IOUtils.toByteArray() do IOUtils classe como mostrado abaixo -

//reading an image
File image = new File("C://POIPPT//boy.jpg");

//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));

Adicione a imagem à apresentação usando addPicture(). Este método aceita duas variáveis: formato da matriz de bytes da imagem a ser adicionada e a variável estática que representa o formato do arquivo da imagem. O uso doaddPicture() método é mostrado abaixo -

int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);

Incorpore a imagem ao slide usando createPicture() como mostrado abaixo -

XSLFPictureShape pic = slide.createPicture(idx);

Abaixo está o programa completo para adicionar uma imagem ao slide em uma apresentação -

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

import org.apache.poi.util.IOUtils;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFPictureData;
import org.apache.poi.xslf.usermodel.XSLFPictureShape;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class AddingImage {
   
   public static void main(String args[]) throws IOException {
   
      //creating a presentation 
      XMLSlideShow ppt = new XMLSlideShow();
      
      //creating a slide in it 
      XSLFSlide slide = ppt.createSlide();
      
      //reading an image
      File image = new File("C://POIPPT//boy.jpg");
      
      //converting it into a byte array
      byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
      
      //adding the image to the presentation
      int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);
      
      //creating a slide with given picture on it
      XSLFPictureShape pic = slide.createPicture(idx);
      
      //creating a file object 
      File file = new File("addingimage.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //saving the changes to a file
      ppt.write(out)
      System.out.println("image added successfully");
      out.close();	
   }
}

Salve o código Java acima como AddingImage.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac AddingImage.java $java AddingImage

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

reordering of the slides is done

A apresentação com o slide recém-adicionado com imagem aparece da seguinte maneira -

Lendo a imagem

Você pode obter os dados de todas as imagens usando o getAllPictures() método do XMLSlideShowclasse. O programa a seguir lê as imagens de uma apresentação -

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

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFPictureData;

public class Readingimage {
  
  public static void main(String args[]) throws IOException {
   
      //open an existing presentation 
      File file = new File("addingimage.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //reading all the pictures in the presentation
      for(XSLFPictureData data : ppt.getAllPictures()){
         
         byte[] bytes = data.getData();
         String fileName = data.getFileName();
         int pictureFormat = data.getPictureType();
         System.out.println("picture name: " + fileName);
         System.out.println("picture format: " + pictureFormat);   
      }	    
      
      //saving the changes to a file
      FileOutputStream out = new FileOutputStream(file);
      ppt.write(out);
      out.close();	
   }
}

Salve o código Java acima como Readingimage.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac Readingimage.java $java Readingimage

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

picture name: image1.png
picture format: 6

Neste capítulo, você aprenderá a criar hiperlinks em uma apresentação.

Criação de hiperlinks

Você pode ler os hiperlinks em uma apresentação usando o createHyperlink() método do XSLFTextRunclasse. Siga o procedimento abaixo para criar um hiperlink em uma apresentação.

Crie uma apresentação vazia usando o XMLSlideShow classe como mostrado abaixo -

XMLSlideShow ppt = new XMLSlideShow();

Crie um slide vazio e crie uma caixa de texto e corpo do slide usando corpo e layout de conteúdo.

//create an empty presentation
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

//creating a slide with title and content layout
XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
XSLFSlide slide = ppt.createSlide(slidelayout);

//selection of body place holder
XSLFTextShape body = slide.getPlaceholder(1);

//clear the existing text in the slide
body.clearText();

Crie um objeto de execução de texto e defina o texto como mostrado abaixo -

XSLFTextRun textRun = body.addNewTextParagraph().addNewTextRun();
textRun.setText("Tutorials point");

Crie um hiperlink usando o createHyperlink() método do XSLFTextRun classe como mostrado abaixo -

XSLFHyperlink link = textRun.createHyperlink();

Defina o endereço do link para o hiperlink usando o setAddress() método de XSLFHyperlink classe como mostrado abaixo -

link.setAddress("http://www.tutorialspoint.com/");

A seguir está o programa completo para criar hyperlink 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.XSLFHyperlink;
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.XSLFTextRun;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class CreatingHyperlinks {

   public static void main(String args[]) throws IOException {
      
      //create an empty 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 body = slide.getPlaceholder(1);
      
      //clear the existing text in the slid
      body.clearText();
      
      //adding new paragraph
      XSLFTextRun textRun = body.addNewTextParagraph().addNewTextRun();
      
      //setting the text
      textRun.setText("Tutorials point");	
      
      //creating the hyperlink
      XSLFHyperlink link = textRun.createHyperlink();
      
      //setting the link address
      link.setAddress("http://www.tutorialspoint.com/");
      
      //create the file object            
      File file = new File("hyperlink.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 CreatingHyperlinks.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac CreatingHyperlinks.java $java CreatingHyperlinks

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

slide cretated successfully

O slide recém-adicionado com o hiperlink em seu corpo tem a seguinte aparência -

Você pode obter uma contagem do número de formas usadas em uma apresentação usando o método getShapeName() do XSLFShapeclasse. Abaixo está o programa para ler as formas de uma apresentação -

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

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFShape;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class ReadingShapes {
   
   public static void main(String args[]) throws IOException {
      
      //creating a slideshow 
      File file = new File("shapes.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //get slides 
      XSLFSlide[] slide = ppt.getSlides();
      
      //getting the shapes in the presentation
      System.out.println("Shapes in the presentation:");
      for (int i = 0; i < slide.length; i++){
         
         XSLFShape[] sh = slide[i].getShapes();
         for (int j = 0; j < sh.length; j++){
            
            //name of the shape
            System.out.println(sh[j].getShapeName());
         }
      }
      
      FileOutputStream out = new FileOutputStream(file);
      ppt.write(out);
      out.close();	
   }
}

Salve o código Java acima como ReadingShapes.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac ReadingShapes.java $java ReadingShapes

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

Shapes in the presentation: 
Rectangle 1
Oval 1
Isosceles Triangle 1

O slide recém-adicionado com as várias formas aparece da seguinte forma -

O texto em uma apresentação pode ser formatado usando os métodos do XSLFTextRunclasse. Para isso, você deve criar umXSLFTextRun objeto de classe, selecionando um dos layouts de slide como mostrado abaixo -

//create the empty 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 body = slide.getPlaceholder(1);

//clear the existing text in the slide
body.clearText();

//adding new paragraph
XSLFTextParagraph paragraph = body.addNewTextParagraph();

//creating text run object
XSLFTextRun run = paragraph.addNewTextRun();

Você pode definir o tamanho da fonte do texto na apresentação usando setFontSize().

run.setFontColor(java.awt.Color.red);
run.setFontSize(24);

O fragmento de código a seguir mostra como aplicar diferentes estilos de formatação (negrito, itálico, sublinhado, riscado) ao texto em uma apresentação.

//change the text into bold format
run.setBold(true);

//change the text it to italic format
run.setItalic(true)

// strike through the text
run.setStrikethrough(true);

//underline the text
run.setUnderline(true);

Para ter quebras de linha entre os parágrafos, use addLineBreak() do XSLFTextParagraph classe como mostrado abaixo -

paragraph.addLineBreak();

Abaixo está o programa completo para formatar o texto usando todos os métodos acima -

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.XSLFTextParagraph;
import org.apache.poi.xslf.usermodel.XSLFTextRun;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class TextFormating {
   
   public static void main(String args[]) throws IOException {
      
      //creating an empty 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 body = slide.getPlaceholder(1);
      
      //clear the existing text in the slide
      body.clearText();
      
      //adding new paragraph
      XSLFTextParagraph paragraph = body.addNewTextParagraph();
      
      //formatting line 1
      
      XSLFTextRun run1 = paragraph.addNewTextRun();
      run1.setText("This is a colored line");      
      
      //setting color to the text
      run1.setFontColor(java.awt.Color.red);      
      
      //setting font size to the text
      run1.setFontSize(24);      
      
      //moving to the next line
      paragraph.addLineBreak();
     
      //formatting line 2
      
      XSLFTextRun run2 = paragraph.addNewTextRun();
      run2.setText("This is a bold line");
      run2.setFontColor(java.awt.Color.CYAN);
      
      //making the text bold
      run2.setBold(true);
      paragraph.addLineBreak();
      
      //formatting line 3
      
      XSLFTextRun run3 = paragraph.addNewTextRun();
      run3.setText(" This is a striked line");
      run3.setFontSize(12);
      
      //making the text italic
      run3.setItalic(true);
      
      //strike through the text
      run3.setStrikethrough(true);
      paragraph.addLineBreak();
       
      //formatting line 4
      
      XSLFTextRun run4 = paragraph.addNewTextRun();
      run4.setText(" This an underlined line");
      run4.setUnderline(true);
      
      //underlining the text
      paragraph.addLineBreak();
      
      //creating a file object
      File file = new File(“TextFormat.pptx”);
      FileOutputStream out = new FileOutputStream(file);
       
      //saving the changes to a file
      ppt.write(out);
      out.close();	 
   }
}

Salve o código acima como TextFormating.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac TextFormating.java $java TextFormating

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

Formatting completed successfully

O slide com o texto formatado aparece da seguinte forma -

Você pode mesclar várias apresentações usando o importContent() método do XMLSlideShowclasse. Abaixo está o programa completo para mesclar duas apresentações -

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class MergingMultiplePresentations {
   
      public static void main(String args[]) throws IOException {
      
      //creating empty presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //taking the two presentations that are to be merged 
      String file1 = "presentation1.pptx";
      String file2 = "presentation2.pptx";
      String[] inputs = {file1, file2};
      
      for(String arg : inputs){
      
         FileInputStream inputstream = new FileInputStream(arg);
         XMLSlideShow src = new XMLSlideShow(inputstream);
         
         for(XSLFSlide srcSlide : src.getSlides()) {
         
            //merging the contents
            ppt.createSlide().importContent(srcSlide);
         }
      }
     
      String file3 = "combinedpresentation.pptx";
      
      //creating the file object
      FileOutputStream out = new FileOutputStream(file3);
      
      // saving the changes to a file
      ppt.write(out);
      System.out.println("Merging done successfully");
      out.close();
   }
}

Salve o código acima como MergingMultiplePresentations.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac MergingMultiplePresentations.java $java MergingMultiplePresentations

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

Merging done successfully

O instantâneo a seguir mostra a primeira apresentação -

O instantâneo a seguir mostra a segunda apresentação -

A seguir está o resultado do programa após a fusão dos dois slides. Aqui você pode ver o conteúdo dos slides anteriores mesclados.

Você pode converter uma apresentação em um arquivo de imagem. O programa a seguir mostra como fazer isso.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class PptToImage {
   
   public static void main(String args[]) throws IOException {
      
      //creating an empty presentation
      File file=new File("pptToImage.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //getting the dimensions and size of the slide 
      Dimension pgsize = ppt.getPageSize();
      XSLFSlide[] slide = ppt.getSlides();
      
      BufferedImage img = null;
      
      for (int i = 0; i < slide.length; i++) {
         img = new BufferedImage(pgsize.width, pgsize.height,BufferedImage.TYPE_INT_RGB);
         Graphics2D graphics = img.createGraphics();

         //clear the drawing area
         graphics.setPaint(Color.white);
         graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));

         //render
         slide[i].draw(graphics);
         
      }
      
      //creating an image file as output
      FileOutputStream out = new FileOutputStream("ppt_image.png");
      javax.imageio.ImageIO.write(img, "png", out);
      ppt.write(out);
      
      System.out.println("Image successfully created");
      out.close();	
   }
}

Salve o código Java acima como PpttoPNG.javae, em seguida, compilar e executá-lo no prompt de comando da seguinte maneira -

$javac PpttoPNG.java $java PpttoPNG

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

Image created successfully

O instantâneo a seguir mostra a apresentação fornecida como entrada -

A seguir está o instantâneo da imagem criada no local especificado.