В нашей предыдущей публикации в блоге мы исследовали 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. Итак, следите за обновлениями.