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.
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.
На следующих изображениях показаны каталоги и файловые структуры внутри загруженной папки.
Добавьте полный путь к пяти банкам, как показано на изображении выше, к 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 выглядит следующим образом —
Редактирование существующей презентации
Чтобы открыть существующую презентацию, создайте экземпляр класса 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 с недавно добавленным слайдом макета заголовка выглядит следующим образом:
Название и содержание Макет
Давайте создадим слайд в 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
Ниже приведен снимок презентации до изменения размера слайда.
После изменения размера слайд выглядит следующим образом:
Изменение порядка слайдов
Вы можете установить порядок слайдов, используя метод 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
Следующий снимок показывает первую презентацию —
Следующий снимок показывает вторую презентацию —
Ниже приведен вывод программы после объединения двух слайдов. Здесь вы можете увидеть содержание предыдущих слайдов, объединенных вместе.
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
Следующий снимок показывает презентацию, которая дается в качестве входных данных —
Ниже приведен снимок изображения, созданного в указанном месте.