In unserem früheren Blogbeitrag haben wir die Apache POI XSLF-API zum Erstellen und Aktualisieren einer Microsoft PowerPoint PPTX-Datei mit Java untersucht. Mit Apache POI für Java können Sie in Ihren Java-Anwendungen mit PPT- und PPTX-Dateien arbeiten, ohne sich mit den internen Dateiformatdetails dieser Anwendungen auseinanderzusetzen. In diesem Artikel gehen wir detailliert darauf ein, wie die Apache POI-API zum Einfügen eines Bildes in ein PPTX mit Java verwendet werden kann. Außerdem schauen wir uns an, wie man mit Java Bildinformationen aus einer PPTX-Datei liest.

System Anforderungen

Bevor Sie beginnen, stellen Sie sicher, dass Ihr System die folgenden Anforderungen erfüllt.

  • JDK – Java SE 2 JDK 1.5 oder höher
  • Speicher – 1 GB RAM
  • Betriebssystem – Windows/Linux/Mac OS

Apache POI für Java installieren

Sie benötigen eine Java-Entwicklungsumgebung wie Eclipse, IntelliJ IDEA oder eine andere IDE, mit der Sie vertraut sind, um mit der Apache POI-Bibliothek in Ihrer Anwendung arbeiten zu können. Als Nächstes fügen Sie die Apache POI Maven-Abhängigkeit in die pom.xml-Datei Ihrer Anwendung ein, wie unten gezeigt.

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

Java-Bibliothek zum Hinzufügen von Bildern zu einer PPTX-Datei

Zu diesem Zeitpunkt gehen wir davon aus, dass Ihre Entwicklungsumgebung bereit ist und wir können mit dem Schreiben des Codes zum Hinzufügen von Bildern zu einer PowerPoint-Präsentationsdatei beginnen. Dies wird durch die Verwendung der Methode createPicture() der Klasse XSLFSlide erreicht. Das Einfügen eines Bildes in eine Folie in PowerPoint umfasst die folgenden Schritte.

  • Erstellen Sie eine Instanz der XMLSlideShow-Klasse
  • Fügen Sie der Präsentation eine Folie hinzu, indem Sie die Methode createSlide für die Präsentationsinstanz aus Schritt 1 aufrufen
  • Laden Sie das Bild aus der Datei als Byte-Array und fügen Sie es der XSLFPictureData-Instanz hinzu
  • Rufen Sie die Methode createPicture für die Instanz der Folie auf
  • Speichern Sie die Präsentation in der Ausgabe

Das folgende Codebeispiel demonstriert diese Schritte.

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

Bildinformationen aus einer PPTX-Datei lesen

Mit der Apache POI API für Java können Sie die Daten aller Bilder aus einer PPTX-Datei lesen, indem Sie die Methode getPictureData() der Klasse XMLSlideShow verwenden. Der folgende Beispielcode demonstriert diese Funktionalität durch das Lesen von Bildern aus einer 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();

Abschluss

Mit Apache POI-Komponenten für die Arbeit mit PowerPoint-Präsentationsdateien können Sie Bilder in PowerPoint-PPT- und PPTX-Dateien aus Ihrer Java-Anwendung einfügen. Außerdem können Sie Bildinformationen aus Bildern auf Folien lesen. In unseren kommenden Blogs werden wir die Verwendung von Apache POI Java-Komponenten für die Arbeit mit PowerPoint-Präsentationen weiter demonstrieren. Also bleibt gespannt.