Em nossa postagem anterior do blog, exploramos a API Apache POI XSLF para criar e atualizar um arquivo PPTX do Microsoft PowerPoint com Java. Apache POI para Java permite que você trabalhe com arquivos PPT e PPTX de dentro de seus aplicativos Java sem entrar nos detalhes internos do formato de arquivo deles. Neste artigo, veremos detalhes de como a API Apache POI pode ser usada para inserir uma imagem em um PPTX com Java. Também veremos como ler informações de imagem de um arquivo PPTX usando Java.

Requisitos de sistema

Antes de começar, certifique-se de que seu sistema atenda aos seguintes requisitos.

  • JDK – Java SE 2 JDK 1.5 ou superior
  • Memória – 1 GB de Ram
  • Sistema operacional – Windows/Linux/Mac OS

Instalando o Apache POI para Java

Você precisará de um ambiente de desenvolvimento Java, como Eclipse, IntelliJ IDEA ou qualquer outro IDE com o qual se sinta confortável para trabalhar com a biblioteca Apache POI em seu aplicativo. O próximo passo é adicionar a dependência do Apache POI Maven no arquivo pom.xml do seu aplicativo, conforme mostrado abaixo.

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-compress</artifactId>
    <version>1.23.0</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.7</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>

Biblioteca Java para adicionar imagem a um arquivo PPTX

Neste estágio, assumimos que seu ambiente de desenvolvimento está pronto e podemos começar escrevendo o código para adicionar imagens a um arquivo de apresentação do PowerPoint. Isso é conseguido usando o método createPicture() da classe XSLFSlide. Inserir uma imagem em um slide no PowerPoint inclui as etapas a seguir.

  • Crie uma instância da classe XMLSlideShow
  • Adicione um slide à apresentação chamando o método createSlide na instância da apresentação da etapa 1
  • Carregue a imagem do arquivo como uma matriz de bytes e adicione-a à instância XSLFPictureData
  • Chame o método createPicture na instância do slide
  • Salve a apresentação na saída

O exemplo de código a seguir demonstra essas etapas.

//creating a presentation 
XMLSlideShow pptx = new XMLSlideShow();
  
//creating a slide in it 
XSLFSlide slide = pptx.createSlide();
  
//reading an image
File image = new File("fileformat.png");
  
//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
  
//adding the image to the presentation
XSLFPictureData idx = pptx.addPicture(picture, PictureType.PNG);
  
//creating a slide with given picture on it
XSLFPictureShape pic = slide.createPicture(idx);
  
//creating a file object 
File file = new File("imagetopresentation.pptx");
FileOutputStream out = new FileOutputStream(file);
  
//saving the changes to a file
pptx.write(out);
out.close();

Ler informações de imagem de um arquivo PPTX

Com a API Apache POI para Java, você pode ler os dados de todas as imagens de um arquivo PPTX usando o método getPictureData() da classe XMLSlideShow. O código de exemplo a seguir demonstra essa funcionalidade lendo imagens de uma apresentação.

//open an existing presentation 
File file = new File("imagetopresentation.pptx");
XMLSlideShow pptx = new XMLSlideShow(new FileInputStream(file));
  
//reading all the images from the presentation
for(XSLFPictureData data : pptx.getPictureData()){
     byte[] bytes = data.getData();
     String fileName = data.getFileName();
     PictureType pictureFormat = data.getType();
     System.out.println("picture name: " + fileName);
     System.out.println("picture format: " + pictureFormat);
 }

 //saving the changes to a file
 FileOutputStream out = new FileOutputStream(file);
 pptx.write(out);
 out.close();

Conclusão

Os componentes Apache POI para trabalhar com arquivos de apresentação do PowerPoint permitem inserir imagens em arquivos PowerPoint PPT e PPTX de dentro do seu aplicativo Java. Ele também permite ler informações de imagens em slides. Em nossos próximos blogs, demonstraremos ainda mais o uso dos componentes Java do Apache POI para trabalhar com apresentações do PowerPoint. Então fique ligado.