Nel nostro precedente post sul blog, abbiamo esplorato l’API Apache POI XSLF per creare e aggiornare un file PPTX di Microsoft PowerPoint con Java. Apache POI per Java ti consente di lavorare con file PPT e PPTX dalle tue applicazioni Java senza entrare nei dettagli del formato file interno di queste. In questo articolo, esamineremo i dettagli su come utilizzare l’API Apache POI per inserire un’immagine in un PPTX con Java. Daremo anche un’occhiata a come leggere le informazioni sull’immagine da un file PPTX utilizzando Java.

Requisiti di sistema

Prima di iniziare, assicurati che il tuo sistema soddisfi i seguenti requisiti.

  • JDK – Java SE 2 JDK 1.5 o versione successiva
  • Memoria – 1 GB di RAM
  • Sistema operativo – Windows/Linux/Mac OS

Installazione di Apache POI per Java

Avrai bisogno di un ambiente di sviluppo Java come Eclipse, IntelliJ IDEA o qualsiasi altro IDE con cui ti trovi a tuo agio per lavorare con la libreria POI Apache nella tua applicazione. Il prossimo passo è aggiungere la dipendenza Apache POI Maven nel file pom.xml della tua applicazione come mostrato di seguito.

<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>

Libreria Java per aggiungere un’immagine a un file PPTX

A questo punto supponiamo che il tuo ambiente di sviluppo sia pronto e possiamo iniziare con la scrittura del codice per aggiungere immagini a un file di presentazione PowerPoint. Ciò si ottiene utilizzando il metodo createPicture() della classe XSLFSlide. L’inserimento di un’immagine in una diapositiva in PowerPoint include i passaggi seguenti.

  • Crea un’istanza della classe XMLSlideShow
  • Aggiungi una diapositiva alla presentazione chiamando il metodo createSlide sull’istanza della presentazione dal passaggio 1
  • Carica l’immagine dal file come array di byte e aggiungila all’istanza XSLFPictureData
  • Chiama il metodo createPicture sull’istanza di slide
  • Salva la presentazione nell’output

Nell’esempio di codice riportato di seguito vengono illustrati questi passaggi.

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

Leggere le informazioni sull’immagine da un file PPTX

Con Apache POI API per Java, puoi leggere i dati di tutte le immagini dall’interno di un file PPTX utilizzando il metodo getPictureData() della classe XMLSlideShow. Il codice di esempio seguente illustra questa funzionalità leggendo le immagini da una presentazione.

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

Conclusione

I componenti POI di Apache per lavorare con file di presentazione PowerPoint ti consentono di inserire immagini in file PPT e PPTX di PowerPoint dall’interno dell’applicazione Java. Consente inoltre di leggere le informazioni sull’immagine dalle immagini sulle diapositive. Nei nostri prossimi blog dimostreremo ulteriormente l’utilizzo dei componenti Java Apache POI per lavorare con presentazioni PowerPoint. Quindi restate sintonizzati.