Учебники

Apache POI PPT — Краткое руководство

Apache POI PPT — Обзор

Часто для создания отчетов в формате файлов Microsoft Office требуется программное приложение. Иногда даже ожидается, что приложение получит файлы MS-Office в качестве входных данных.

Любой программист на Java, желающий создавать файлы MS Office в качестве выходных данных, должен использовать для этого предопределенный API только для чтения.

Что такое Apache POI?

Apache POI — это популярный API, который позволяет программистам создавать, изменять и отображать файлы MS-Office с помощью программ на Java. Это библиотека с открытым исходным кодом, разработанная и распространяемая Apache Software Foundation. Он содержит классы и методы для декодирования вводимых пользователем данных или файла в документы MS Office.

Компоненты Apache POI

Apache POI содержит классы и методы для работы со всеми составными документами OLE2 MS-Office. Список компонентов этого API приведен ниже —

  • POIFS (Файловая система реализации плохой обфускации) — этот компонент является основным фактором всех других элементов POI. Он используется для явного чтения разных файлов.

  • HSSF (ужасный формат электронной таблицы) — используется для чтения и записи в формате .xls файлов MS-Excel.

  • XSSF (XML SpreadSheet Format) — используется для формата файлов .xlsx в MS-Excel.

  • HPSF (формат набора ужасных свойств) — используется для извлечения наборов свойств из файлов MS-Office.

  • HWPF (формат ужасного текстового процессора) — используется для чтения и записи файлов расширений .doc MS-Word.

  • XWPF (XML-формат текстового процессора) — используется для чтения и записи файлов расширения .docx MS-Word.

  • HSLF (ужасный формат макета слайда) — используется для чтения, создания и редактирования презентаций PowerPoint.

  • HDGF (формат Horrible DiaGram) — содержит классы и методы для двоичных файлов MS-Visio.

  • HPBF (формат Horrible PuBlisher) — используется для чтения и записи файлов MS-Publisher.

POIFS (Файловая система реализации плохой обфускации) — этот компонент является основным фактором всех других элементов POI. Он используется для явного чтения разных файлов.

HSSF (ужасный формат электронной таблицы) — используется для чтения и записи в формате .xls файлов MS-Excel.

XSSF (XML SpreadSheet Format) — используется для формата файлов .xlsx в MS-Excel.

HPSF (формат набора ужасных свойств) — используется для извлечения наборов свойств из файлов MS-Office.

HWPF (формат ужасного текстового процессора) — используется для чтения и записи файлов расширений .doc MS-Word.

XWPF (XML-формат текстового процессора) — используется для чтения и записи файлов расширения .docx MS-Word.

HSLF (ужасный формат макета слайда) — используется для чтения, создания и редактирования презентаций PowerPoint.

HDGF (формат Horrible DiaGram) — содержит классы и методы для двоичных файлов MS-Visio.

HPBF (формат Horrible PuBlisher) — используется для чтения и записи файлов MS-Publisher.

Этот учебник проведет вас через процесс работы над презентацией Microsoft PowerPoint с использованием Java. Поэтому обсуждение ограничивается компонентом XSLF.

Примечание. Более старые версии POI поддерживают двоичные форматы файлов, такие как doc, xls, ppt и т. Д. Версия 3.5 и выше, POI поддерживает форматы файлов OOXML MS-Office, такие как docx, xlsx, pptx и т. Д.

Ароматы Java PPT API

В этой главе рассказывается о некоторых разновидностях Java PowerPoint API и их функциях. Есть много поставщиков, которые предоставляют API, связанные с Java PPT; некоторые из них рассматриваются в этой главе.

Aspose Slides для Java

Слайды Aspose для Java — это чисто лицензированный Java PPT API, разработанный и распространяемый поставщиком Aspose . Последняя версия этого API — 8.1.2, выпущенная в июле 2014 года. Это богатый и сложный API (комбинация простых классов Java и классов AWT) для разработки компонента PPT, который может читать, записывать и управлять слайдами.

Общие применения этого API следующие:

  • Создавайте динамические презентации
  • Рендеринг и печать презентаций высокого качества
  • Создавать, редактировать, конвертировать и распечатывать презентации

Apache POI

Apache POI — это библиотека с открытым исходным кодом, предоставленная Apache Software Foundation. Большинство разработчиков малых и средних приложений сильно зависят от Apache POI (HSLF + XSLF). Он поддерживает все основные функции библиотек PPT; однако рендеринг и извлечение текста являются его основными характеристиками. Ниже приведена архитектура Apache POI для PPT.

POI Flavors

Apache POI PPT — Установка

В этой главе рассказывается о настройке Apache POI в системах на базе Windows и Linux. Apache POI можно легко установить и интегрировать в текущую среду Java, выполнив несколько простых шагов без каких-либо сложных процедур настройки. Администрация пользователя требуется для установки.

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

JDK Java SE 2 JDK 1.5 или выше
объем памяти 1 ГБ ОЗУ (рекомендуется)
Дисковое пространство Нет минимальных требований
Версия операционной системы Windows XP или выше, Linux

Давайте теперь перейдем к этапам установки Apache POI.

Шаг 1. Проверьте вашу установку Java

Прежде всего, вам необходимо установить Java Software Development Kit (SDK) в вашей системе. Чтобы убедиться в этом, выполните любую из следующих двух команд в зависимости от платформы, на которой вы работаете.

Если установка Java была выполнена правильно, то на ней отобразится текущая версия и спецификация вашей установки Java. Пример вывода приведен в следующей таблице.

Платформа команда Пример вывода
Windows

Откройте Командную консоль и введите —

\> Java-версия

Java версия «1.7.0_60»

Java (TM) SE Run Time

Окружающая среда (сборка 1.7.0_60-b19)

Java Hotspot (TM) 64-битный сервер

ВМ (сборка 24.60-b09, смешанный режим)

Linux

Откройте командный терминал и введите —

$ java – версия

Java-версия «1.7.0_25»

Открытая среда выполнения JDK (rhel-2.3.10.4.el6_4-x86_64)

Откройте виртуальную машину 64-разрядного сервера JDK (сборка 23.7-b01, смешанный режим)

Откройте Командную консоль и введите —

\> Java-версия

Java версия «1.7.0_60»

Java (TM) SE Run Time

Окружающая среда (сборка 1.7.0_60-b19)

Java Hotspot (TM) 64-битный сервер

ВМ (сборка 24.60-b09, смешанный режим)

Откройте командный терминал и введите —

$ java – версия

Java-версия «1.7.0_25»

Открытая среда выполнения JDK (rhel-2.3.10.4.el6_4-x86_64)

Откройте виртуальную машину 64-разрядного сервера JDK (сборка 23.7-b01, смешанный режим)

  • Мы предполагаем, что читатели этого руководства установили Java SDK версии 1.7.0_60 в своей системе.

  • Если у вас нет Java SDK, загрузите его текущую версию с https://www.oracle.com/technetwork/java/javase/downloads/index.html и установите его.

Мы предполагаем, что читатели этого руководства установили Java SDK версии 1.7.0_60 в своей системе.

Если у вас нет Java SDK, загрузите его текущую версию с https://www.oracle.com/technetwork/java/javase/downloads/index.html и установите его.

Шаг 2. Установите среду Java

Установите переменную среды JAVA_HOME, чтобы она указывала на местоположение базовой директории, где установлена ​​Java на вашем компьютере. Например,

Платформа Описание
Windows Установите JAVA_HOME в C: \ ProgramFiles \ java \ jdk1.7.0_60
Linux Экспорт JAVA_HOME = / usr / local / java-current

Добавьте полный путь расположения компилятора Java к системному пути.

Платформа Описание
Windows Добавьте строку «C: \ Program Files \ Java \ jdk1.7.0_60 \ bin» в конец системной переменной PATH.
Linux Экспорт PATH = $ PATH: $ JAVA_HOME / bin /

Выполните команду java -version из командной строки, как описано выше.

Шаг 3: Установите Apache POI Library

Загрузите последнюю версию Apache POI по адресу https://poi.apache.org/download.html и разархивируйте его содержимое в папку, из которой необходимые библиотеки могут быть связаны с вашей программой Java. Предположим, что файлы собраны в папке на диске C.

На следующих изображениях показаны каталоги и файловые структуры внутри загруженной папки.

Jar Hierarchy1

Jar Hierarchy2

Добавьте полный путь к пяти банкам, как показано на изображении выше, к CLASSPATH.

Платформа Описание
Windows

Добавьте следующие строки в конец пользовательской переменной CLASSPATH —

«C: \ пои-3,9 \ пои-3.9-20121203.jar;»

«C: \ пои-3,9 \ пои-OOXML-3.9-20121203.jar;»

«C: \ пои-3,9 \ пои-OOXML-схемы-3.9-20121203.jar;»

«C: \ пои-3,9 \ OOXML Пб \ dom4j-1.6.1.jar;»

«C:. \ Пои-3,9 \ OOXML Пб \ XMLBeans-2.3.0.jar;»;

Linux

Экспортировать CLASSPATH = $ CLASSPATH:

/usr/share/poi-3.9/poi-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-schemas-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-3.9-20121203.tar:

/usr/share/poi-3.9/ooxml-lib/dom4j-1.6.1.tar:

/usr/share/poi-3.9/ooxml-lib/xmlbeans-2.3.0.tar

Добавьте следующие строки в конец пользовательской переменной CLASSPATH —

«C: \ пои-3,9 \ пои-3.9-20121203.jar;»

«C: \ пои-3,9 \ пои-OOXML-3.9-20121203.jar;»

«C: \ пои-3,9 \ пои-OOXML-схемы-3.9-20121203.jar;»

«C: \ пои-3,9 \ OOXML Пб \ dom4j-1.6.1.jar;»

«C:. \ Пои-3,9 \ OOXML Пб \ XMLBeans-2.3.0.jar;»;

Экспортировать CLASSPATH = $ CLASSPATH:

/usr/share/poi-3.9/poi-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-schemas-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-3.9-20121203.tar:

/usr/share/poi-3.9/ooxml-lib/dom4j-1.6.1.tar:

/usr/share/poi-3.9/ooxml-lib/xmlbeans-2.3.0.tar

pom.xml

Ниже приведен файл pom.xml для запуска программ из этого руководства.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>ApachePoiPPT</groupId>
   <artifactId>ApachePoiPPT</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <build>
      <sourceDirectory>src</sourceDirectory>
      <plugins>
         <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
               <source>1.8</source>
               <target>1.8</target>
            </configuration>
         </plugin>
      </plugins>
   </build>
   <dependencies>  
      <dependency>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi</artifactId>
         <version>3.9</version>
      </dependency>
      <dependency>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-ooxml</artifactId>
         <version>3.9</version>
      </dependency>    
   </dependencies>
</project>

Apache POI PPT — Классы и Методы

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

презентация

Для создания и управления презентацией у вас есть класс XMLSlideShow в пакете org.apache.poi.xslf.usermodel . Ниже приведены некоторые важные методы и конструктор этого класса.

Класс — XMLSlideShow

Пакет — org.apache.poi.xslf.usermodel

S.No Конструктор и описание
1

XMLSlideShow (java.io.InputStream inputStream)

Вы можете создать экземпляр этого класса, передав ему объект класса inputtream.

XMLSlideShow (java.io.InputStream inputStream)

Вы можете создать экземпляр этого класса, передав ему объект класса inputtream.

S.No Методы и описание
1

int addPicture (byte [] pictureData, int формат)

Используя этот метод, вы можете добавить изображение к презентации.

2

XSLFSlide createSlide ()

Создает пустой слайд в презентации.

3

XSLFSlide createSlide (макет XSLFSlideLayout)

Создает слайд с заданным макетом слайда.

4

java.util.List <XSLFPictureData> getAllPictures ()

Возвращает массив всех картинок в презентации.

5

java.awt.Dimension getPageSize ()

Используя этот метод, вы можете узнать текущий размер страницы.

6

XSLFSlideMaster [] getSlideMasters ()

Возвращает массив всех слайдов в презентации.

7

XSLFSlide [] getSlides ()

Возвращает все слайды в презентации.

8

XSLFSlide removeSlide (int index)

Используя этот метод, вы можете удалить слайд из презентации.

9

void setPageSize (java.awt.Dimension pgSize)

Используя этот метод, вы можете сбросить размер страницы.

10

void setSlideOrder (слайд XSLFSlide, int newIndex)

Используя этот метод, вы можете изменить порядок слайдов.

int addPicture (byte [] pictureData, int формат)

Используя этот метод, вы можете добавить изображение к презентации.

XSLFSlide createSlide ()

Создает пустой слайд в презентации.

XSLFSlide createSlide (макет XSLFSlideLayout)

Создает слайд с заданным макетом слайда.

java.util.List <XSLFPictureData> getAllPictures ()

Возвращает массив всех картинок в презентации.

java.awt.Dimension getPageSize ()

Используя этот метод, вы можете узнать текущий размер страницы.

XSLFSlideMaster [] getSlideMasters ()

Возвращает массив всех слайдов в презентации.

XSLFSlide [] getSlides ()

Возвращает все слайды в презентации.

XSLFSlide removeSlide (int index)

Используя этот метод, вы можете удалить слайд из презентации.

void setPageSize (java.awt.Dimension pgSize)

Используя этот метод, вы можете сбросить размер страницы.

void setSlideOrder (слайд XSLFSlide, int newIndex)

Используя этот метод, вы можете изменить порядок слайдов.

Горка

Для создания и управления слайдом в презентации используются методы класса XSLFSlide . Некоторые важные методы этого класса упомянуты ниже.

Класс — XSLFSlide

Пакет — org.apache.poi.xslf.usermodel

S.No Метод и описание
1

XSLFBackground getBackground ()

Возвращает объект XSLFBackground, который можно использовать для получения таких деталей, как цвет и привязка фона слайда. Вы также можете рисовать фигуры на слайде, используя этот объект.

2

XSLFSlideLayout getSlideLayout ()

Предоставляет доступ к объекту XSLFSlideLayout текущего слайда.

3

XSLFSlideMaster getSlideMaster ()

Предоставляет доступ к мастеру слайдов текущего слайда.

4

XSLFTheme getTheme ()

Возвращает объект XSLFTheme текущего слайда.

5

java.lang.String getTitle ()

Возвращает заголовок текущего слайда.

6

XSLFSlide importContent (XSLFSheet src)

Копирует содержимое другого слайда на этот слайд.

XSLFBackground getBackground ()

Возвращает объект XSLFBackground, который можно использовать для получения таких деталей, как цвет и привязка фона слайда. Вы также можете рисовать фигуры на слайде, используя этот объект.

XSLFSlideLayout getSlideLayout ()

Предоставляет доступ к объекту XSLFSlideLayout текущего слайда.

XSLFSlideMaster getSlideMaster ()

Предоставляет доступ к мастеру слайдов текущего слайда.

XSLFTheme getTheme ()

Возвращает объект XSLFTheme текущего слайда.

java.lang.String getTitle ()

Возвращает заголовок текущего слайда.

XSLFSlide importContent (XSLFSheet src)

Копирует содержимое другого слайда на этот слайд.

Slide Master

Это компонент презентации, имеющий разные макеты слайдов. Класс XSLFSlideMaster предоставляет вам доступ к нему. Упомянутый ниже некоторые важные методы этого класса.

Класс — XSLFSlideMaster

Пакет — org.apache.poi.xslf.usermodel

S.No Метод и описание
1

XSLFBackground getBackground ()

Возвращает общий фон мастера слайдов.

2

XSLFSlideLayout getLayout (тип SlideLayout)

Возвращает объект XSLFSlideLayout.

3

XSLFSlideLayout [] getSlideLayouts ()

Возвращает все макеты слайдов в этом мастере слайдов.

XSLFBackground getBackground ()

Возвращает общий фон мастера слайдов.

XSLFSlideLayout getLayout (тип SlideLayout)

Возвращает объект XSLFSlideLayout.

XSLFSlideLayout [] getSlideLayouts ()

Возвращает все макеты слайдов в этом мастере слайдов.

План слайдов

В библиотеке POI есть класс XSLFSlideLayout , с помощью которого вы можете управлять макетами слайда.

Класс — XSLFSlideLayout

Пакет — org.apache.poi.xslf.usermodel

S.No Метод и описание
1

void copyLayout (слайд XSLFSlide)

Этот метод скопирует заполнители из этого макета на заданный слайд.

void copyLayout (слайд XSLFSlide)

Этот метод скопирует заполнители из этого макета на заданный слайд.

Текстовый абзац

Вы можете записать содержимое на слайд, используя класс XSLFTextParagraph . Ниже упоминаются некоторые важные методы этого класса.

Класс — XSLFTextParagraph

Пакет — org.apache.poi.xslf.usermodel

S.No Метод и описание
1

XSLFTextRun addLineBreak ()

Вставляет разрыв строки в абзаце.

2

XSLFTextRun addNewTextRun ()

Добавляет новый прогон текста в абзаце.

3

void setBulletAutoNumber (схема ListAutoNumber, int startAt)

Применяет автоматические нумерованные маркеры к абзацу.

4

void setIndent (double value)

Устанавливает отступ к тексту в абзаце.

5

void setLeftMargin (двойное значение)

Этот метод используется для добавления левого поля абзаца.

6

void setLineSpacing (двойной межстрочный интервал)

Этот метод используется для установки межстрочного интервала в абзаце.

7

void setTextAlign (выравнивание TextAlign)

Этот метод используется для установки выравнивания, которое должно быть установлено для абзаца.

XSLFTextRun addLineBreak ()

Вставляет разрыв строки в абзаце.

XSLFTextRun addNewTextRun ()

Добавляет новый прогон текста в абзаце.

void setBulletAutoNumber (схема ListAutoNumber, int startAt)

Применяет автоматические нумерованные маркеры к абзацу.

void setIndent (double value)

Устанавливает отступ к тексту в абзаце.

void setLeftMargin (двойное значение)

Этот метод используется для добавления левого поля абзаца.

void setLineSpacing (двойной межстрочный интервал)

Этот метод используется для установки межстрочного интервала в абзаце.

void setTextAlign (выравнивание TextAlign)

Этот метод используется для установки выравнивания, которое должно быть установлено для абзаца.

Текстовый прогон

Это самый низкий уровень разделения текста в текстовом теле. У вас есть класс XSLFTextRun для управления текстовым прогоном абзаца. Ниже упоминаются некоторые важные методы этого класса.

Класс — XSLFTextParagraph

Пакет — org.apache.poi.xslf.usermodel

S.No Метод и описание
1

XSLFHyperlink createHyperlink ()

Создает гиперссылку в презентации.

2

XSLFHyperlink getHyperlink ()

Этот метод используется для получения гиперссылки.

3

java.lang.String getText ()

Возвращает значение этого текстового узла в виде строки Java.

4

void setBold (булево полужирное)

Этот метод используется для выделения текста жирным шрифтом.

5

void setCharacterSpacing (double spc)

Устанавливает интервал между символами в текстовом прогоне.

6

void setFontColor (java.awt.Color color)

Устанавливает цвет шрифта текста.

7

void setFontSize (double fontSize)

Устанавливает размер шрифта текста.

8

void setItalic (логический курсив)

Этот метод используется для выделения абзаца курсивом.

9

void setStrikethrough (логический удар)

Этот метод используется для форматирования текста как зачеркнутого текста.

10

void setSubscript (логический флаг)

Этот метод используется для форматирования текста как индекса.

11

void setSuperscript (логический флаг)

Этот метод используется для форматирования текста в этом прогоне как верхний индекс.

12

void setText (текст java.lang.String)

Этот метод используется для установки текста в прогоне.

13

void setUnderline (логическое подчеркивание)

Этот метод используется для подчеркивания текста в текстовом прогоне.

XSLFHyperlink createHyperlink ()

Создает гиперссылку в презентации.

XSLFHyperlink getHyperlink ()

Этот метод используется для получения гиперссылки.

java.lang.String getText ()

Возвращает значение этого текстового узла в виде строки Java.

void setBold (булево полужирное)

Этот метод используется для выделения текста жирным шрифтом.

void setCharacterSpacing (double spc)

Устанавливает интервал между символами в текстовом прогоне.

void setFontColor (java.awt.Color color)

Устанавливает цвет шрифта текста.

void setFontSize (double fontSize)

Устанавливает размер шрифта текста.

void setItalic (логический курсив)

Этот метод используется для выделения абзаца курсивом.

void setStrikethrough (логический удар)

Этот метод используется для форматирования текста как зачеркнутого текста.

void setSubscript (логический флаг)

Этот метод используется для форматирования текста как индекса.

void setSuperscript (логический флаг)

Этот метод используется для форматирования текста в этом прогоне как верхний индекс.

void setText (текст java.lang.String)

Этот метод используется для установки текста в прогоне.

void setUnderline (логическое подчеркивание)

Этот метод используется для подчеркивания текста в текстовом прогоне.

Форма текста

В PPT у нас есть фигуры, которые могут содержать текст внутри них. Мы можем управлять ими, используя класс XSLFTextShape . Упомянутый ниже некоторые важные методы этого класса.

Класс — XSLFTextShape

Пакет — org.apache.poi.xslf.usermodel

S.No Метод и описание
1

void setPlaceholder (Заполнитель-заполнитель)

Используя этот метод, вы можете выбрать заполнитель.

2

Заполнитель getTextType ()

Возвращает тип текущего заполнителя.

3

void clearText ()

Очищает текстовую область текущей текстовой фигуры.

4

XSLFTextParagraph addNewTextParagraph ()

Добавляет новый абзац к фигуре.

5

void drawContent (графика java.awt.Graphics2D)

Этот метод позволяет рисовать любой контент на слайде.

void setPlaceholder (Заполнитель-заполнитель)

Используя этот метод, вы можете выбрать заполнитель.

Заполнитель getTextType ()

Возвращает тип текущего заполнителя.

void clearText ()

Очищает текстовую область текущей текстовой фигуры.

XSLFTextParagraph addNewTextParagraph ()

Добавляет новый абзац к фигуре.

void drawContent (графика java.awt.Graphics2D)

Этот метод позволяет рисовать любой контент на слайде.

Гиперссылка

В библиотеке POI есть класс XSLFHyperlink, с помощью которого вы можете создать гиперссылку в презентации. Упомянутый ниже некоторые важные методы этого класса.

Класс — XSLFHyperlink

Пакет — org.apache.poi.xslf.usermodel

S.No Метод и описание
1

java.net.URI getTargetURL ()

Возвращает URL-адрес, существующий в слайде презентации.

2

void setAddress (адрес java.lang.String)

Этот метод используется для установки адреса на URL.

3

void setAddress (слайд XSLFSlide)

Устанавливает адрес для URL-адреса, представленного на слайде презентации.

java.net.URI getTargetURL ()

Возвращает URL-адрес, существующий в слайде презентации.

void setAddress (адрес java.lang.String)

Этот метод используется для установки адреса на URL.

void setAddress (слайд XSLFSlide)

Устанавливает адрес для URL-адреса, представленного на слайде презентации.

Apache POI PPT — Презентация

Как правило, мы используем MS-PowerPoint для создания презентаций. Теперь давайте посмотрим, как создавать презентации с использованием Java. После завершения этой главы вы сможете создавать новые презентации MS-PowerPoint и открывать существующие PPT с помощью вашей Java-программы.

Создание пустой презентации

Чтобы создать пустую презентацию, вы должны создать экземпляр класса XMLSlideShow пакета org.poi.xslf.usermodel

XMLSlideShow ppt = new XMLSlideShow();

Сохраните изменения в документе PPT, используя класс FileOutputStream

File file = new File("C://POIPPT//Examples//example1.pptx");
FileOutputStream out = new FileOutputStream(file);
ppt.write(out);

Ниже приведена полная программа для создания пустой презентации MS-PowerPoint.

import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class CreatePresentation {
   
   public static void main(String args[]) throws IOException {
   
      //creating a new empty slide show
      XMLSlideShow ppt = new XMLSlideShow();	     
      
      //creating an FileOutputStream object
      File file = new File("example1.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //saving the changes to a file
      ppt.write(out);
      System.out.println("Presentation created successfully");
      out.close()
   }
}

Сохраните приведенный выше Java-код как CreatePresentation.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac CreatePresentation.java
$java CreatePresentation

Если ваша системная среда сконфигурирована с библиотекой POI, она скомпилируется и выполнится, чтобы создать пустой файл PPT с именем example1.pptx в вашем текущем каталоге и отобразить следующий вывод в командной строке:

Presentation created successfully

Пустой документ PowerPoint выглядит следующим образом —

Пример PowerPoint

Редактирование существующей презентации

Чтобы открыть существующую презентацию, создайте экземпляр класса XMLSlideShow и передайте объект FileInputStream файла для редактирования в качестве аргумента в конструктор XMLSlideShow .

File file = new File(“C://POIPPT//Examples//example1.pptx”);
FileInputstream inputstream = new FileInputStream(file);
XMLSlideShow ppt = new XMLSlideShow(inputstream);

Вы можете добавить слайды в презентацию, используя метод createSlide () класса XMLSlideShow, который находится в пакете org.poi.xslf.usermodel .

XSLFSlide slide1 = ppt.createSlide();

Ниже приведена полная программа для открытия и добавления слайдов в существующий PPT —

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class EditPresentation {

   public static void main(String ar[]) throws IOException {
	   
      //opening an existing slide show
      File file = new File("example1.pptx");
      FileInputStream inputstream = new FileInputStream(file);
      XMLSlideShow ppt = new XMLSlideShow(inputstream);
      
      //adding slides to the slodeshow
      XSLFSlide slide1 = ppt.createSlide();
      XSLFSlide slide2 = ppt.createSlide();
      
      //saving the changes 
      FileOutputStream out = new FileOutputStream(file);
      ppt.write(out);
      
      System.out.println("Presentation edited successfully");
      out.close();	
   }
} 

Сохраните приведенный выше Java-код как EditPresentation.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac EditPresentation.java
$java EditPresentation

Это скомпилирует и выполнит, чтобы произвести следующий вывод —

slides successfully added

Выходной документ PPT с вновь добавленными слайдами выглядит следующим образом:

Изменить пример

После добавления слайдов в PPT вы можете добавлять, выполнять, читать и записывать операции над слайдами.

Apache POI PPT — макеты слайдов

В предыдущей главе вы видели, как создавать пустые слайды и как добавлять в них слайды. В этой главе вы узнаете, как получить список доступных слайдов и как создать слайд с различными макетами.

Доступные макеты слайдов

Презентации PowerPoint имеют макеты слайдов, и вы можете выбрать нужный макет для редактирования слайда. Прежде всего, давайте выясним список всех доступных макетов слайдов.

  • Существуют разные мастера слайдов, и в каждом из них есть несколько макетов слайдов.

  • Вы можете получить список мастеров слайдов, используя метод getSlideMasters () класса XMLSlideShow .

  • Вы можете получить список макетов слайдов от каждого мастера слайдов, используя метод getSlideLayouts () класса XSLFSlideMaster .

  • Вы можете получить имя макета слайда из объекта макета, используя метод getType () класса XSLFSlideLayout .

Существуют разные мастера слайдов, и в каждом из них есть несколько макетов слайдов.

Вы можете получить список мастеров слайдов, используя метод getSlideMasters () класса XMLSlideShow .

Вы можете получить список макетов слайдов от каждого мастера слайдов, используя метод getSlideLayouts () класса XSLFSlideMaster .

Вы можете получить имя макета слайда из объекта макета, используя метод getType () класса XSLFSlideLayout .

Примечание. Все эти классы принадлежат пакету org.poi.xslf.usermodel .

Ниже приведена полная программа для получения списка доступных макетов слайдов в PPT —

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;

public class SlideLayouts {

   public static void main(String args[]) throws IOException {
   
      //create an empty presentation
      XMLSlideShow ppt = new XMLSlideShow();
      System.out.println("Available slide layouts:")
   
      //getting the list of all slide masters
      for(XSLFSlideMaster master : ppt.getSlideMasters()) {
   
         //getting the list of the layouts in each slide master
         for(XSLFSlideLayout layout : master.getSlideLayouts()) {
   
            //getting the list of available slides
            System.out.println(layout.getType());
         } 
      }
   }
}

Сохраните приведенный выше Java-код как SlideLayouts.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac SlideLayouts.java
$java SlideLayouts

Это скомпилирует и выполнит, чтобы произвести следующий вывод —

Available slide layouts:
TITLE
PIC_TX
VERT_TX
TWO_TX_TWO_OBJ
BLANK
VERT_TITLE_AND_TX
TITLE_AND_CONTENT
TITLE_ONLY
SECTION_HEADER
TWO_OBJ
OBJ_TX

Ниже показаны некоторые примеры макетов слайдов, доступных в MS-Office 360, выпуск 2013 года.

Образцы макетов слайдов

Название макета

Давайте создадим слайд в PPT, используя макет заголовка. Следуйте инструкциям ниже

Шаг 1. Создайте пустую презентацию, создав экземпляр класса XMLSlideShow, как показано ниже.

XMLSlideShow ppt = new XMLSlideShow();

Шаг 2 — Получить список мастеров слайдов, используя метод getSlideMasters () . После этого выберите нужный мастер слайдов, используя указатель, как показано ниже.

XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

Здесь мы получаем мастер слайдов по умолчанию, который находится в 0- м месте массива мастеров слайдов.

Шаг 3 — Получить нужный макет с помощью метода getLayout () класса XSLFSlideMaster . Этот метод принимает параметр, в котором вы должны передать одну из статических переменных класса SlideLayout , которая представляет наш желаемый макет. В этом классе есть несколько переменных, где каждая переменная представляет макет слайда.

Приведенный ниже фрагмент кода показывает, как создать макет заголовка.

XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);

Шаг 4 — Создайте новый слайд, передав объект макета слайда в качестве параметра.

XSLFSlide slide = ppt.createSlide(titleLayout);

Шаг 5 — Выберите заполнитель, используя метод getPlaceholder () класса XSLFSlide . Этот метод принимает целочисленный параметр. Передав ему 0 , вы получите объект XSLFTextShape , с помощью которого вы можете получить доступ к текстовой области заголовка слайда. Установите заголовок, используя метод setText (), как показано ниже.

XSLFTextShape title1 = slide.getPlaceholder(0);
//setting the title init
title1.setText("Tutorials point");

Ниже приведена полная программа для создания слайда с макетом заголовка в презентации —

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.SlideLayout;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class TitleLayout {

   public static void main(String args[]) throws IOException {
   
      //creating presentation
      XMLSlideShow ppt = new XMLSlideShow();	    	
      
      //getting the slide master object
      XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
      
      //get the desired slide layout 
      XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
                                                     
      //creating a slide with title layout
      XSLFSlide slide1 = ppt.createSlide(titleLayout);
      
      //selecting the place holder in it 
      XSLFTextShape title1 = slide1.getPlaceholder(0); 
      
      //setting the title init 
      title1.setText("Tutorials point");
      
      //create a file object
      File file = new File("C://POIPPT//Examples//Titlelayout.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //save the changes in a PPt document
      ppt.write(out);
      System.out.println("slide cretated successfully");
      out.close();  
   }
}

Сохраните приведенный выше Java-код как TitleLayout.java, а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac TitleLayout.java
$java TitleLayout

Он будет скомпилирован и выполнен для генерации следующего вывода.

slide created successfully

Документ PPT с недавно добавленным слайдом макета заголовка выглядит следующим образом:

TitleLayOut

Название и содержание Макет

Давайте создадим слайд в PPT, используя заголовок и макет контента. Следуйте инструкциям ниже.

Шаг 1. Создайте пустую презентацию, создав экземпляр класса XMLSlideShow, как показано ниже.

XMLSlideShow ppt = new XMLSlideShow();

Шаг 2 — Получить список мастеров слайдов, используя метод getSlideMasters () . Выберите нужный мастер слайдов, используя указатель, как показано ниже.

XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

Здесь мы получаем мастер слайдов по умолчанию, который находится в 0-м месте массива мастеров слайдов.

Шаг 3 — Получить нужный макет с помощью метода getLayout () класса XSLFSlideMaster . Этот метод принимает параметр, в котором вы должны передать одну из статических переменных класса SlideLayout, которая представляет наш желаемый макет. В этом классе есть несколько переменных, которые представляют макеты слайдов.

В следующем фрагменте кода показано, как создать заголовок и макет содержимого.

XSLFSlideLayout contentlayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);

Шаг 4 — Создайте новый слайд, передав объект макета слайда в качестве параметра.

XSLFSlide slide = ppt.createSlide(SlideLayout.TITLE_AND_CONTENT);

Шаг 5 — Выберите заполнитель, используя метод getPlaceholder () класса XSLFSlide . Этот метод принимает целочисленный параметр. Передав ему 1 , вы получите объект XSLFTextShape , с помощью которого вы можете получить доступ к области содержимого слайда. Установите заголовок, используя метод setText (), как показано ниже.

XSLFTextShape title1 = slide1.getPlaceholder(1);
//setting the title init 
title1.setText("Introduction");

Шаг 6 — Очистите существующий текст на слайде, используя метод clearText () класса XSLFTextShape .

body.clearText();

Шаг 7 — Добавьте новый абзац, используя метод addNewTextParagraph () . Теперь добавьте новый текстовый прогон к абзацу, используя метод addNewTextRun () . Теперь, чтобы запустить текст, добавьте текст, используя метод setText (), как показано ниже.

body.addNewTextParagraph().addNewTextRun().setText("this is  my first slide body");

Ниже приведена полная программа для создания слайда с макетом заголовка в презентации —

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.SlideLayout;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class TitleAndBodyLayout {
   
   public static void main(String args[]) throws IOException {
   
      //creating presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //getting the slide master object
      XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
      
      //select a layout from specified list
      XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
      
      //creating a slide with title and content layout
      XSLFSlide slide = ppt.createSlide(slidelayout);
      //selection of title place holder
      XSLFTextShape title = slide.getPlaceholder(0);
      
      //setting the title in it
      title.setText("introduction");
      
      //selection of body placeholder
      XSLFTextShape body = slide.getPlaceholder(1);
      
      //clear the existing text in the slide
      body.clearText();
      
      //adding new paragraph
      body.addNewTextParagraph().addNewTextRun().setText("this is  my first slide body");
      
      //create a file object
      File file = new File("contentlayout.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //save the changes in a file
      ppt.write(out);
      System.out.println("slide cretated successfully");
      out.close();                
   }
}

Сохраните приведенный выше Java-код как TitleLayout.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac TitleLayout.java
$java TitleLayout

Это скомпилирует и выполнит, чтобы произвести следующий вывод —

slide created successfully

Документ PPT с недавно добавленным слайдом макета заголовка выглядит следующим образом:

образ

Таким же образом, вы можете создавать слайды с различными макетами.

Apache POI PPT — Управление слайдами

После прочтения этой главы вы сможете удалять, изменять порядок и выполнять операции чтения и записи на слайде.

Смена слайда

Мы можем изменить размер страницы слайда, используя метод setPageSize () класса XMLSlideShow .

Сначала создайте презентацию, как показано ниже —

File file = new File("C://POIPPT//Examples// TitleAndContentLayout.pptx");

//create presentation
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));

Получите размер текущего слайда, используя метод getPageSize () класса XMLSlideShow .

java.awt.Dimension pgsize = ppt.getPageSize();

Установите размер страницы с помощью метода setPageSize () .

ppt.setPageSize(new java.awt.Dimension(1024, 768));

Полная программа для изменения размера слайда приведена ниже —

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;

public class ChangingSlide {
   
   public static void main(String args[]) throws IOException {

      //create file object
      File file = new File("TitleAndContentLayout.pptx");
	 
      //create presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //getting the current page size
      java.awt.Dimension pgsize = ppt.getPageSize();
      int pgw = pgsize.width; //slide width in points
      int pgh = pgsize.height; //slide height in points
      
      System.out.println("current page size of the PPT is:");
      System.out.println("width :" + pgw);
      System.out.println("height :" + pgh);
      
      //set new page size
      ppt.setPageSize(new java.awt.Dimension(2048,1536));
      
      //creating file object
      FileOutputStream out = new FileOutputStream(file);
      
      //saving the changes to a file
      ppt.write(out);
      System.out.println("slide size changed to given dimentions ");
      out.close();	
   }
}

Сохраните приведенный выше Java-код как ChangingSlide.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac ChangingSlide.java
$java ChangingSlide

Он будет скомпилирован и выполнен для генерации следующего вывода.

current page size of the presentation is : 
width :720
height :540
slide size changed to given dimensions

Ниже приведен снимок презентации до изменения размера слайда.

TitleAndContentLayout

После изменения размера слайд выглядит следующим образом:

SlideAfterChange

Изменение порядка слайдов

Вы можете установить порядок слайдов, используя метод setSlideOrder () . Ниже приведена процедура установки порядка слайдов.

Откройте существующий документ PPT, как показано ниже —

File file = new File("C://POIPPT//Examples//example1.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));

Получите слайды, используя метод getSlides (), как показано ниже —

XSLFSlide[] slides = ppt.getSlides();

Выберите слайд из массива слайдов и измените порядок, используя метод setSlideOrder (), как показано ниже —

//selecting the fourth slide
XSLFSlide selectesdslide = slides[4];

//bringing it to the top
ppt.setSlideOrder(selectesdslide, 1);

Ниже приведена полная программа для изменения порядка слайдов в презентации.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class ReorderSlide {	
   
   public static void main(String args[]) throws IOException {
   
      //opening an existing presentation
      File file = new File("example1.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //get the slides 
      XSLFSlide[] slides = ppt.getSlides();    
      
      //selecting the fourth slide
      XSLFSlide selectesdslide = slides[13];
      
      //bringing it to the top
      ppt.setSlideOrder(selectesdslide, 0);
      
      //creating an file object 
      FileOutputStream out = new FileOutputStream(file);
	  
      //saving the changes to a file
      ppt.write(out);
      out.close();	
   }
}

Сохраните приведенный выше Java-код как ReorderSlide.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac ReorderSlide.java
$java ReorderSlide

Он будет скомпилирован и выполнен для генерации следующего вывода.

Reordering of the slides is done

Ниже приведен снимок презентации перед изменением порядка слайдов.

Перед повторным заказом

После изменения порядка слайдов презентация выглядит следующим образом. Здесь мы выбрали слайд с изображением и переместили его наверх.

После повторного заказа

Удаление слайдов

Вы можете удалить слайды, используя метод removeSlide () . Следуйте инструкциям ниже, чтобы удалить слайды.

Откройте существующую презентацию, используя класс XMLSlideShow, как показано ниже —

File file = new File("C://POIPPT//Examples//image.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));

Удалите нужный слайд, используя метод removeSlide () . Этот метод принимает целочисленный параметр. Передайте индекс слайда, который должен быть удален этому методу.

ppt.removeSlide(1);

Ниже приведена программа для удаления слайдов из презентации —

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;

public class Deleteslide { 
   
   public static void main(String args[]) throws IOException {
   
      //Opening an existing slide
      File file = new File("image.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //deleting a slide
      ppt.removeSlide(1);
      
      //creating a file object
      FileOutputStream out = new FileOutputStream(file);
      
      //Saving the changes to the presentation
      ppt.write(out);
      out.close();	
   }
}

Сохраните приведенный выше Java-код как Deleteslide.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac Deleteslide.java
$java Deleteslide

Это скомпилирует и выполнит, чтобы произвести следующий вывод —

reordering of the slides is done

Снимок ниже представляет презентацию перед удалением слайда —

После повторного заказа

После удаления слайда презентация выглядит следующим образом:

Удалить слайды

Apache POI PPT — Изображения

В этой главе вы узнаете, как добавить изображение в PPT и как прочитать изображение с него.

Добавление изображения

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

Следуйте данной процедуре, чтобы добавить изображение в презентацию. Создайте пустое слайд-шоу, используя XMLSlideShow, как показано ниже —

XMLSlideShow ppt = new XMLSlideShow();

Создайте в нем пустую презентацию, используя createSlide () .

XSLFSlide slide = ppt.createSlide();

Прочитайте файл изображения, который нужно добавить, и преобразуйте его в байтовый массив, используя IOUtils.toByteArray () класса IOUtils, как показано ниже —

//reading an image
File image = new File("C://POIPPT//boy.jpg");

//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));

Добавьте изображение в презентацию, используя addPicture () . Этот метод принимает две переменные: формат байтового массива изображения, которое нужно добавить, и статическую переменную, представляющую формат файла изображения. Использование метода addPicture () показано ниже —

int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);

Вставьте изображение в слайд, используя createPicture (), как показано ниже —

XSLFPictureShape pic = slide.createPicture(idx);

Ниже приведена полная программа для добавления изображения к слайду в презентации.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.util.IOUtils;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFPictureData;
import org.apache.poi.xslf.usermodel.XSLFPictureShape;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class AddingImage {
   
   public static void main(String args[]) throws IOException {
   
      //creating a presentation 
      XMLSlideShow ppt = new XMLSlideShow();
      
      //creating a slide in it 
      XSLFSlide slide = ppt.createSlide();
      
      //reading an image
      File image = new File("C://POIPPT//boy.jpg");
      
      //converting it into a byte array
      byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
      
      //adding the image to the presentation
      int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);
      
      //creating a slide with given picture on it
      XSLFPictureShape pic = slide.createPicture(idx);
      
      //creating a file object 
      File file = new File("addingimage.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //saving the changes to a file
      ppt.write(out)
      System.out.println("image added successfully");
      out.close();	
   }
}

Сохраните приведенный выше Java-код как AddingImage.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac AddingImage.java
$java AddingImage

Это скомпилирует и выполнит, чтобы произвести следующий вывод —

reordering of the slides is done

Презентация с новым добавленным слайдом с изображением выглядит следующим образом:

Добавление изображения

Чтение изображения

Вы можете получить данные обо всех изображениях, используя метод getAllPictures () класса XMLSlideShow . Следующая программа читает изображения из презентации —

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFPictureData;

public class Readingimage {
  
  public static void main(String args[]) throws IOException {
   
      //open an existing presentation 
      File file = new File("addingimage.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //reading all the pictures in the presentation
      for(XSLFPictureData data : ppt.getAllPictures()){
         
         byte[] bytes = data.getData();
         String fileName = data.getFileName();
         int pictureFormat = data.getPictureType();
         System.out.println("picture name: " + fileName);
         System.out.println("picture format: " + pictureFormat);   
      }	    
      
      //saving the changes to a file
      FileOutputStream out = new FileOutputStream(file);
      ppt.write(out);
      out.close();	
   }
}

Сохраните приведенный выше Java-код как Readingimage.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac Readingimage.java
$java Readingimage

Это скомпилирует и выполнит, чтобы произвести следующий вывод —

picture name: image1.png
picture format: 6 

Apache POI PPT — Создание гиперссылок

В этой главе вы узнаете, как создавать гиперссылки в презентации.

Создание гиперссылок

Вы можете прочитать гиперссылки в презентации, используя метод createHyperlink () класса XSLFTextRun . Следуйте приведенной ниже процедуре, чтобы создать гиперссылку в презентации.

Создайте пустую презентацию, используя класс XMLSlideShow, как показано ниже —

XMLSlideShow ppt = new XMLSlideShow();

Создайте пустой слайд и создайте текстовое поле и тело слайда, используя тело и макет содержимого.

//create an empty presentation
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

//creating a slide with title and content layout
XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
XSLFSlide slide = ppt.createSlide(slidelayout);

//selection of body place holder
XSLFTextShape body = slide.getPlaceholder(1);

//clear the existing text in the slide
body.clearText();

Создайте текстовый объект запуска и установите для него текст, как показано ниже —

XSLFTextRun textRun = body.addNewTextParagraph().addNewTextRun();
textRun.setText("Tutorials point");

Создайте гиперссылку, используя метод createHyperlink () класса XSLFTextRun, как показано ниже —

XSLFHyperlink link = textRun.createHyperlink();

Установите адрес ссылки для гиперссылки, используя метод setAddress () класса XSLFHyperlink, как показано ниже —

link.setAddress("http://www.tutorialspoint.com/");

Ниже приведена полная программа для создания гиперссылки в презентации —

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.SlideLayout;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFHyperlink;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
import org.apache.poi.xslf.usermodel.XSLFTextRun;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class CreatingHyperlinks {

   public static void main(String args[]) throws IOException {
      
      //create an empty presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //getting the slide master object
      XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
      
      //select a layout from specified list
      XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
     
      //creating a slide with title and content layout
      XSLFSlide slide = ppt.createSlide(slidelayout);
      
      //selection of title place holder
      XSLFTextShape body = slide.getPlaceholder(1);
      
      //clear the existing text in the slid
      body.clearText();
      
      //adding new paragraph
      XSLFTextRun textRun = body.addNewTextParagraph().addNewTextRun();
      
      //setting the text
      textRun.setText("Tutorials point");	
      
      //creating the hyperlink
      XSLFHyperlink link = textRun.createHyperlink();
      
      //setting the link address
      link.setAddress("http://www.tutorialspoint.com/");
      
      //create the file object            
      File file = new File("hyperlink.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //save the changes in a file
      ppt.write(out);
      System.out.println("slide cretated successfully");
      out.close();              
   }
}

Сохраните приведенный выше Java-код как CreateHyperlinks.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac CreatingHyperlinks.java
$java CreatingHyperlinks

Это скомпилирует и выполнит, чтобы произвести следующий вывод —

slide cretated successfully 

Недавно добавленный слайд с гиперссылкой в ​​его теле выглядит следующим образом:

Создать гиперссылку

Apache POI PPT — чтение форм

Вы можете получить количество фигур, используемых в презентации, используя метод getShapeName () класса XSLFShape . Ниже приведена программа для чтения форм из презентации —

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFShape;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class ReadingShapes {
   
   public static void main(String args[]) throws IOException {
      
      //creating a slideshow 
      File file = new File("shapes.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //get slides 
      XSLFSlide[] slide = ppt.getSlides();
      
      //getting the shapes in the presentation
      System.out.println("Shapes in the presentation:");
      for (int i = 0; i < slide.length; i++){
         
         XSLFShape[] sh = slide[i].getShapes();
         for (int j = 0; j < sh.length; j++){
            
            //name of the shape
            System.out.println(sh[j].getShapeName());
         }
      }
      
      FileOutputStream out = new FileOutputStream(file);
      ppt.write(out);
      out.close();	
   }
}

Сохраните приведенный выше Java-код как ReadingShapes.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac ReadingShapes.java
$java ReadingShapes

Он будет скомпилирован и выполнен для генерации следующего вывода.

Shapes in the presentation: 
Rectangle 1
Oval 1
Isosceles Triangle 1

Недавно добавленный слайд с различными формами выглядит следующим образом:

Чтение форм

Apache POI PPT — форматирование текста

Текст в презентации может быть отформатирован с использованием методов класса XSLFTextRun . Для этого вам нужно создать объект класса XSLFTextRun , выбрав один из макетов слайдов, как показано ниже —

//create the empty presentation 
XMLSlideShow ppt = new XMLSlideShow();

//getting the slide master object
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

//select a layout from specified list
XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);

//creating a slide with title and content layout
XSLFSlide slide = ppt.createSlide(slidelayout);

//selection of title place holder
XSLFTextShape body = slide.getPlaceholder(1);

//clear the existing text in the slide
body.clearText();

//adding new paragraph
XSLFTextParagraph paragraph = body.addNewTextParagraph();

//creating text run object
XSLFTextRun run = paragraph.addNewTextRun();

Вы можете установить размер шрифта текста в презентации, используя setFontSize () .

run.setFontColor(java.awt.Color.red);
run.setFontSize(24);

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

//change the text into bold format
run.setBold(true);

//change the text it to italic format
run.setItalic(true)

// strike through the text
run.setStrikethrough(true);

//underline the text
run.setUnderline(true);

Чтобы иметь разрывы строк между абзацами, используйте addLineBreak () класса XSLFTextParagraph, как показано ниже —

paragraph.addLineBreak();

Ниже приведена полная программа для форматирования текста с использованием всех вышеперечисленных методов —

import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.SlideLayout;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
import org.apache.poi.xslf.usermodel.XSLFTextParagraph;
import org.apache.poi.xslf.usermodel.XSLFTextRun;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class TextFormating {
   
   public static void main(String args[]) throws IOException {
      
      //creating an empty presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //getting the slide master object
      XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
      
      //select a layout from specified list
      XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
      
      //creating a slide with title and content layout
      XSLFSlide slide = ppt.createSlide(slidelayout);
      
      //selection of title place holder
      XSLFTextShape body = slide.getPlaceholder(1);
      
      //clear the existing text in the slide
      body.clearText();
      
      //adding new paragraph
      XSLFTextParagraph paragraph = body.addNewTextParagraph();
      
      //formatting line 1
      
      XSLFTextRun run1 = paragraph.addNewTextRun();
      run1.setText("This is a colored line");      
      
      //setting color to the text
      run1.setFontColor(java.awt.Color.red);      
      
      //setting font size to the text
      run1.setFontSize(24);      
      
      //moving to the next line
      paragraph.addLineBreak();
     
      //formatting line 2
      
      XSLFTextRun run2 = paragraph.addNewTextRun();
      run2.setText("This is a bold line");
      run2.setFontColor(java.awt.Color.CYAN);
      
      //making the text bold
      run2.setBold(true);
      paragraph.addLineBreak();
      
      //formatting line 3
      
      XSLFTextRun run3 = paragraph.addNewTextRun();
      run3.setText(" This is a striked line");
      run3.setFontSize(12);
      
      //making the text italic
      run3.setItalic(true);
      
      //strike through the text
      run3.setStrikethrough(true);
      paragraph.addLineBreak();
       
      //formatting line 4
      
      XSLFTextRun run4 = paragraph.addNewTextRun();
      run4.setText(" This an underlined line");
      run4.setUnderline(true);
      
      //underlining the text
      paragraph.addLineBreak();
      
      //creating a file object
      File file = new File(“TextFormat.pptx”);
      FileOutputStream out = new FileOutputStream(file);
       
      //saving the changes to a file
      ppt.write(out);
      out.close();	 
   }
}

Сохраните приведенный выше код как TextFormating.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac TextFormating.java
$java TextFormating

Это скомпилирует и выполнит, чтобы произвести следующий вывод —

Formatting completed successfully 

Слайд с форматированным текстом выглядит следующим образом:

Форматирование текста

Apache POI PPT — объединение

Вы можете объединить несколько презентаций, используя метод importContent () класса XMLSlideShow . Ниже приведена полная программа для объединения двух презентаций —

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class MergingMultiplePresentations {
   
      public static void main(String args[]) throws IOException {
      
      //creating empty presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //taking the two presentations that are to be merged 
      String file1 = "presentation1.pptx";
      String file2 = "presentation2.pptx";
      String[] inputs = {file1, file2};
      
      for(String arg : inputs){
      
         FileInputStream inputstream = new FileInputStream(arg);
         XMLSlideShow src = new XMLSlideShow(inputstream);
         
         for(XSLFSlide srcSlide : src.getSlides()) {
         
            //merging the contents
            ppt.createSlide().importContent(srcSlide);
         }
      }
     
      String file3 = "combinedpresentation.pptx";
      
      //creating the file object
      FileOutputStream out = new FileOutputStream(file3);
      
      // saving the changes to a file
      ppt.write(out);
      System.out.println("Merging done successfully");
      out.close();
   }
}

Сохраните приведенный выше код как MergingMultiplePresentations.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac MergingMultiplePresentations.java
$java MergingMultiplePresentations

Это скомпилирует и выполнит, чтобы произвести следующий вывод —

Merging done successfully

Следующий снимок показывает первую презентацию —

Presentation1

Следующий снимок показывает вторую презентацию —

presentation2

Ниже приведен вывод программы после объединения двух слайдов. Здесь вы можете увидеть содержание предыдущих слайдов, объединенных вместе.

Комбинированная презентация

Apache POI PPT — PPT для изображения

Вы можете конвертировать презентацию в файл изображения. Следующая программа показывает, как это сделать.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class PptToImage {
   
   public static void main(String args[]) throws IOException {
      
      //creating an empty presentation
      File file=new File("pptToImage.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //getting the dimensions and size of the slide 
      Dimension pgsize = ppt.getPageSize();
      XSLFSlide[] slide = ppt.getSlides();
      
      BufferedImage img = null;
      
      for (int i = 0; i < slide.length; i++) {
         img = new BufferedImage(pgsize.width, pgsize.height,BufferedImage.TYPE_INT_RGB);
         Graphics2D graphics = img.createGraphics();

         //clear the drawing area
         graphics.setPaint(Color.white);
         graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));

         //render
         slide[i].draw(graphics);
         
      }
      
      //creating an image file as output
      FileOutputStream out = new FileOutputStream("ppt_image.png");
      javax.imageio.ImageIO.write(img, "png", out);
      ppt.write(out);
      
      System.out.println("Image successfully created");
      out.close();	
   }
}

Сохраните приведенный выше Java-код как PpttoPNG.java , а затем скомпилируйте и выполните его из командной строки следующим образом:

$javac PpttoPNG.java
$java PpttoPNG

Это скомпилирует и выполнит, чтобы произвести следующий вывод —

Image created successfully

Следующий снимок показывает презентацию, которая дается в качестве входных данных —

presentation1

Ниже приведен снимок изображения, созданного в указанном месте.