En nuestra publicación anterior del blog, exploramos la API Apache POI XSLF para crear y actualizar un archivo PPTX de Microsoft PowerPoint con Java. Apache POI para Java le permite trabajar con archivos PPT y PPTX desde sus aplicaciones Java sin entrar en los detalles del formato de archivo interno de estas. En este artículo, analizaremos los detalles de cómo se puede utilizar la API de Apache POI para insertar una imagen en un PPTX con Java. También veremos cómo leer información de imagen de un archivo PPTX usando Java.

Requisitos del sistema

Antes de comenzar, asegúrese de que su sistema cumpla con los siguientes requisitos.

  • JDK – Java SE 2 JDK 1.5 o superior
  • Memoria – 1 GB de RAM
  • Sistema operativo: Windows/Linux/Mac OS

Instalación de Apache POI para Java

Necesitará un entorno de desarrollo Java como Eclipse, IntelliJ IDEA o cualquier otro IDE con el que se sienta cómodo para trabajar con la biblioteca Apache POI en su aplicación. Lo siguiente es agregar la dependencia de Apache POI Maven en el archivo pom.xml de su aplicación como se muestra a continuación.

<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 agregar imágenes a un archivo PPTX

En esta etapa, asumimos que su entorno de desarrollo está listo y podemos comenzar a escribir el código para agregar imágenes a un archivo de presentación de PowerPoint. Esto se logra utilizando el método createPicture() de la clase XSLFSlide. Insertar una imagen en una diapositiva en PowerPoint incluye los siguientes pasos.

  • Crear una instancia de la clase XMLSlideShow
  • Agregue una diapositiva a la presentación llamando al método createSlide en la instancia de la presentación desde el paso 1
  • Cargue la imagen del archivo como una matriz de bytes y agréguela a la instancia XSLFPictureData
  • Llame al método createPicture en la instancia de la diapositiva
  • Guarde la presentación en la salida.

El siguiente ejemplo de código demuestra estos pasos.

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

Leer información de imagen de un archivo PPTX

Con Apache POI API para Java, puede leer los datos de todas las imágenes desde un archivo PPTX utilizando el método getPictureData() de la clase XMLSlideShow. El siguiente código de ejemplo demuestra esta funcionalidad leyendo imágenes de una presentación.

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

Conclusión

Los componentes de Apache POI para trabajar con archivos de presentación de PowerPoint le permiten insertar imágenes en archivos PPT y PPTX de PowerPoint desde su aplicación Java. También le permite leer información de imágenes de imágenes en diapositivas. En nuestros próximos blogs, demostraremos con más detalle el uso de los componentes Java de Apache POI para trabajar con presentaciones de PowerPoint. Así que estad atentos.