Dans notre article de blog précédent, nous avons exploré l’API Apache POI XSLF pour créer et mettre à jour un fichier Microsoft PowerPoint PPTX avec Java. Apache POI pour Java vous permet de travailler avec des fichiers PPT et PPTX à partir de vos applications Java sans entrer dans les détails du format de fichier interne de celles-ci. Dans cet article, nous verrons en détail comment l’API Apache POI peut être utilisée pour insérer une image dans un PPTX avec Java. Nous verrons également comment lire les informations d’image à partir d’un fichier PPTX à l’aide de Java.

Configuration requise

Avant de commencer, assurez-vous que votre système répond aux exigences suivantes.

  • JDK – Java SE 2 JDK 1.5 ou supérieur
  • Mémoire – 1 Go de RAM
  • Système d’exploitation – Windows/Linux/Mac OS

Installation d’Apache POI pour Java

Vous aurez besoin d’un environnement de développement Java tel qu’Eclipse, IntelliJ IDEA ou tout autre IDE avec lequel vous êtes à l’aise pour travailler avec la bibliothèque Apache POI dans votre application. Ensuite, ajoutez la dépendance Apache POI Maven dans le fichier pom.xml de votre application, comme indiqué ci-dessous.

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

Bibliothèque Java pour ajouter une image à un fichier PPTX

A ce stade, nous supposons que votre environnement de développement est prêt et nous pouvons commencer par écrire le code permettant d’ajouter des images à un fichier de présentation PowerPoint. Ceci est réalisé en utilisant la méthode createPicture() de la classe XSLFSlide. L’insertion d’une image dans une diapositive dans PowerPoint comprend les étapes suivantes.

  • Créer une instance de la classe XMLSlideShow
  • Ajoutez une diapositive à la présentation en appelant la méthode createSlide sur l’instance de présentation de l’étape 1
  • Chargez l’image du fichier sous forme de tableau d’octets et ajoutez-la à l’instance XSLFPictureData
  • Appelez la méthode createPicture sur l’instance de slide
  • Enregistrer la présentation dans la sortie

L’exemple de code suivant illustre ces étapes.

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

Lire les informations sur l’image à partir d’un fichier PPTX

Avec l’API Apache POI pour Java, vous pouvez lire les données de toutes les images à partir d’un fichier PPTX à l’aide de la méthode getPictureData() de la classe XMLSlideShow. L’exemple de code suivant illustre cette fonctionnalité en lisant des images d’une présentation.

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

Conclusion

Les composants Apache POI permettant de travailler avec des fichiers de présentation PowerPoint vous permettent d’insérer des images dans des fichiers PowerPoint PPT et PPTX à partir de votre application Java. Il vous permet également de lire les informations sur les images des diapositives. Dans nos prochains blogs, nous démontrerons plus en détail l’utilisation des composants Java Apache POI pour travailler avec des présentations PowerPoint. Alors restez à l’écoute.