В нашей предыдущей публикации в блоге мы исследовали API Apache POI XSLF для создания и обновления файла Microsoft PowerPoint PPTX с помощью Java. Apache POI для Java позволяет вам работать с файлами PPT и PPTX из ваших приложений Java, не вдаваясь в подробности их внутреннего формата файлов. В этой статье мы подробно рассмотрим, как можно использовать API Apache POI для вставки изображения в PPTX с помощью Java. Мы также рассмотрим, как читать информацию об изображении из файла PPTX с помощью Java.

Системные Требования

Прежде чем начать, убедитесь, что ваша система соответствует следующим требованиям.

  • JDK – Java SE 2 JDK 1.5 или выше
  • Память – 1 ГБ оперативной памяти
  • Операционная система – Windows/Linux/Mac OS

Установка Apache POI для Java

Вам понадобится среда разработки Java, такая как Eclipse, IntelliJ IDEA или любая другая IDE, с которой вам удобно работать с библиотекой Apache POI в вашем приложении. Далее необходимо добавить зависимость Apache POI Maven в файл pom.xml вашего приложения, как показано ниже.

<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 для добавления изображения в файл PPTX

На этом этапе мы предполагаем, что ваша среда разработки готова, и мы можем начать с написания кода для добавления изображений в файл презентации PowerPoint. Это достигается с помощью метода createPicture() класса XSLFSlide. Вставка изображения в слайд в PowerPoint включает следующие шаги.

  • Создайте экземпляр класса XMLSlideShow.
  • Добавьте слайд в презентацию, вызвав метод createSlide экземпляра презентации из шага 1.
  • Загрузите изображение из файла в виде массива байтов и добавьте его в экземпляр XSLFPictureData.
  • Вызовите метод createPicture для экземпляра слайда.
  • Сохраните презентацию на выходе

В следующем примере кода демонстрируются эти шаги.

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

Чтение информации об изображении из файла PPTX

С помощью Apache POI API для Java вы можете прочитать данные всех изображений из PPTX-файла с помощью метода getPictureData() класса XMLSlideShow. Следующий пример кода демонстрирует эту функцию путем чтения изображений из презентации.

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

Заключение

Компоненты Apache POI для работы с файлами презентаций PowerPoint позволяют вставлять изображения в файлы PowerPoint PPT и PPTX из вашего Java-приложения. Он также позволяет считывать информацию об изображениях с изображений на слайдах. В наших следующих блогах мы дополнительно продемонстрируем использование Java-компонентов Apache POI для работы с презентациями PowerPoint. Итак, следите за обновлениями.