W naszym wcześniejszym poście na blogu omawialiśmy interfejs API Apache POI XSLF do tworzenia i aktualizowania pliku PPTX programu Microsoft PowerPoint w języku Java. Apache POI for Java umożliwia pracę z plikami PPT i PPTX z poziomu aplikacji Java bez konieczności wchodzenia w szczegóły ich wewnętrznego formatu plików. W tym artykule omówimy szczegółowo, w jaki sposób można wykorzystać interfejs API Apache POI do wstawienia obrazu do PPTX za pomocą języka Java. Przyjrzymy się również sposobowi odczytania informacji o obrazie z pliku PPTX przy użyciu języka Java.

wymagania systemowe

Zanim zaczniesz, upewnij się, że Twój system spełnia następujące wymagania.

  • JDK – Java SE 2 JDK 1.5 lub nowsza wersja
  • Pamięć – 1 GB Ramu
  • System operacyjny – Windows/Linux/Mac OS

Instalowanie Apache POI dla Java

Będziesz potrzebować środowiska programistycznego Java, takiego jak Eclipse, IntelliJ IDEA lub inne IDE, z którym czujesz się komfortowo, aby pracować z biblioteką Apache POI w swojej aplikacji. Następnym krokiem jest dodanie zależności Apache POI Maven do pliku pom.xml aplikacji, jak pokazano poniżej.

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

Biblioteka Java do dodawania obrazu do pliku PPTX

Na tym etapie zakładamy, że Twoje środowisko programistyczne jest gotowe i możemy zacząć od napisania kodu umożliwiającego dodanie obrazów do pliku prezentacji PowerPoint. Osiąga się to za pomocą metody createPicture() klasy XSLFSlide. Wstawianie obrazu do slajdu w programie PowerPoint obejmuje następujące kroki.

  • Utwórz instancję klasy XMLSlideShow
  • Dodaj slajd do prezentacji, wywołując metodę createSlide na instancji prezentacji z kroku 1
  • Załaduj obraz z pliku jako tablicę bajtów i dodaj go do instancji XSLFPictureData
  • Wywołaj metodę createPicture w instancji slajdu
  • Zapisz prezentację na wyjściu

Poniższy przykładowy kod demonstruje te kroki.

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

Przeczytaj informacje o obrazie z pliku PPTX

Dzięki Apache POI API for Java możesz odczytać dane wszystkich obrazów z pliku PPTX przy użyciu metody getPictureData() klasy XMLSlideShow. Poniższy przykładowy kod demonstruje tę funkcjonalność, odczytując obrazy z prezentacji.

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

Wniosek

Komponenty Apache POI do pracy z plikami prezentacji programu PowerPoint umożliwiają wstawianie obrazów do plików PowerPoint PPT i PPTX z poziomu aplikacji Java. Umożliwia także odczytywanie informacji o obrazach z obrazów na slajdach. W naszych nadchodzących blogach będziemy dalej zademonstrować wykorzystanie komponentów Java Apache POI do pracy z prezentacjami programu PowerPoint. Bądźcie na bieżąco.