- Apache POI PPT 教程
- Apache POI PPT - 首頁
- Apache POI PPT - 概述
- Apache POI PPT - Java API 版本
- Apache POI PPT - 安裝
- Apache POI PPT - 類與方法
- Apache POI PPT - 簡報
- Apache POI PPT - 幻燈片佈局
- Apache POI PPT - 幻燈片管理
- Apache POI PPT - 圖片
- Apache POI PPT - 建立超連結
- Apache POI PPT - 讀取形狀
- Apache POI PPT - 文字格式化
- Apache POI PPT - 合併
- Apache POI PPT - PPT 轉圖片
- Apache POI PPT 資源
- Apache POI PPT 快速指南
- Apache POI PPT - 有用資源
- Apache POI PPT - 討論
Apache POI PPT 快速指南
Apache POI PPT - 概述
很多時候,軟體應用程式需要生成 Microsoft Office 檔案格式的報表。有時,甚至期望應用程式接收 MS-Office 檔案作為輸入資料。
任何想要生成 MS Office 檔案作為輸出的 Java 程式設計師都必須使用預定義的只讀 API 來實現。
什麼是 Apache POI?
Apache POI 是一個流行的 API,允許程式設計師使用 Java 程式建立、修改和顯示 MS-Office 檔案。它是一個由 Apache 軟體基金會開發和分發的開源庫。它包含用於解碼使用者輸入資料或將檔案解碼為 MS Office 文件的類和方法。
Apache POI 的元件
Apache POI 包含用於處理所有 MS-Office 的 OLE2 複合文件的類和方法。此 API 的元件列表如下:
POIFS (Poor Obfuscation Implementation File System) - 此元件是所有其他 POI 元素的基礎。它用於顯式讀取不同的檔案。
HSSF (Horrible SpreadSheet Format) - 用於讀取和寫入 MS-Excel 檔案的 .xls 格式。
XSSF (XML SpreadSheet Format) - 用於 MS-Excel 的 .xlsx 檔案格式。
HPSF (Horrible Property Set Format) - 用於提取 MS-Office 檔案的屬性集。
HWPF (Horrible Word Processor Format) - 用於讀取和寫入 MS-Word 的 .doc 副檔名檔案。
XWPF (XML Word Processor Format) - 用於讀取和寫入 MS-Word 的 .docx 副檔名檔案。
HSLF (Horrible Slide Layout Format) - 用於讀取、建立和編輯 PowerPoint 簡報。
HDGF (Horrible DiaGram Format) - 包含用於 MS-Visio 二進位制檔案的類和方法。
HPBF (Horrible PuBlisher Format) - 用於讀取和寫入 MS-Publisher 檔案。
本教程指導您完成使用 Java 處理 Microsoft PowerPoint 簡報的過程。因此,討論僅限於XSLF 元件。
注意 - 舊版本的 POI 支援 doc、xls、ppt 等二進位制檔案格式。3.5 版及更高版本,POI 支援 MS-Office 的 OOXML 檔案格式,例如 docx、xlsx、pptx 等。
Java PPT API 的版本
本章將帶您瞭解 Java PowerPoint API 的一些版本及其功能。許多供應商提供與 Java PPT 相關的 API;本章將介紹其中一些。
Aspose Slides for Java
Aspose slides for Java 是一個純許可的 Java PPT API,由供應商Aspose開發和分發。此 API 的最新版本是 8.1.2,於 2014 年 7 月釋出。它是一個豐富且重量級的 API(普通 Java 類和 AWT 類的組合),用於設計可以讀取、寫入和管理幻燈片的 PPT 元件。
此 API 的常用用途如下:
- 構建動態簡報
- 渲染和列印高保真簡報
- 生成、編輯、轉換和列印簡報
Apache POI
Apache POI 是 Apache 軟體基金會提供的 100% 開源庫。大多數小型和中型應用程式開發人員都嚴重依賴 Apache POI (HSLF + XSLF)。它支援 PPT 庫的所有基本功能;但是,渲染和文字提取是其主要功能。以下是 Apache POI for PPT 的架構。
Apache POI PPT - 安裝
本章將指導您完成在基於 Windows 和 Linux 的系統上設定 Apache POI 的過程。Apache POI 可以輕鬆安裝並與您當前的 Java 環境整合,只需按照幾個簡單的步驟即可完成,無需任何複雜的設定過程。安裝時需要使用者管理。
系統要求
| JDK | Java SE 2 JDK 1.5 或更高版本 |
|---|---|
| 記憶體 | 1 GB RAM(推薦) |
| 磁碟空間 | 無最低要求 |
| 作業系統版本 | Windows XP 或更高版本,Linux |
現在讓我們繼續安裝 Apache POI 的步驟。
步驟 1 - 驗證您的 Java 安裝
首先,您需要在系統上安裝 Java 軟體開發工具包 (SDK)。要驗證這一點,請根據您正在使用的平臺執行以下兩個命令中的任何一個。
如果 Java 安裝已正確完成,則它將顯示您 Java 安裝的當前版本和規範。示例輸出如下表所示。
java version "11.0.11" 2021-04-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)
| 平臺 | 命令 | 示例輸出 |
|---|---|---|
| Windows | 開啟命令控制檯並鍵入: >java –version |
java version "11.0.11" 2021-04-20 LTS Open JDK Runtime Environment 18.9 (build 11.0.11+9-LTS-194) Open JDK 64-Bit Server VM (build 11.0.11+9-LTS-194, mixed mode) |
| Linux | 開啟命令終端並鍵入: $java –version |
java version "11.0.11" 2021-04-20 LTS Open JDK Runtime Environment 18.9 (build 11.0.11+9-LTS-194) Open JDK 64-Bit Server VM (build 11.0.11+9-LTS-194, mixed mode) |
我們假設本教程的讀者在他們的系統上安裝了 Java SDK 11.0.11 版本。
如果您沒有 Java SDK,請從www.oracle.com/technetwork/java/javase/downloads/index.html下載其當前版本並安裝。
步驟 2 - 設定您的 Java 環境
設定環境變數 JAVA_HOME 以指向 Java 安裝在您計算機上的基本目錄位置。例如:
| 序號 | 平臺和描述 |
|---|---|
| 1 | Windows 將 JAVA_HOME 設定為 C:\ProgramFiles\java\jdk11.0.11 |
| 2 | Linux export JAVA_HOME = /usr/local/java-current |
將 Java 編譯器位置的完整路徑附加到系統路徑。
| 序號 | 平臺和描述 |
|---|---|
| 1 | Windows 將字串 "C:\Program Files\Java\jdk11.0.11\bin" 附加到系統變數 PATH 的末尾。 |
| 2 | Linux export PATH = $PATH:$JAVA_HOME/bin/ |
如上所述,從命令提示符執行命令java -version。
步驟 3 - 安裝 Apache POI 庫
從https://poi.apache.org/download.html下載最新版本的 Apache POI 並將其內容解壓縮到一個資料夾中,從中可以將所需的庫連結到您的 Java 程式。讓我們假設這些檔案收集在 C 盤上的一個資料夾中。
將所需jars的完整路徑新增到 CLASSPATH,如下所示。
| 序號 | 平臺和描述 |
|---|---|
| 1 | Windows 將以下字串附加到使用者變數的末尾 CLASSPATH - C:\poi-bin-5.1.0\poi-5.1.0.jar; C:\poi-bin-5.1.0\poi-ooxml-5.1.0.jar; C:\poi-bin-5.1.0\poi-ooxml-full-5.1.0.jar; C:\poi-bin-5.1.0\lib\commons-codec-1.15.jar; C:\poi-bin-5.1.0\lib\commons-collections4-4.4.jar; C:\poi-bin-5.1.0\lib\commons-io-2.11.0.jar; C:\poi-bin-5.1.0\lib\commons-math3-3.6.1.jar; C:\poi-bin-5.1.0\lib\log4j-api-2.14.1.jar; C:\poi-bin-5.1.0\lib\SparseBitSet-1.2.jar; C\poi-bin-5.1.0\ooxml-lib\commons-compress-1.21.jar C\poi-bin-5.1.0\ooxml-lib\commons-logging-1.2.jar C\poi-bin-5.1.0\ooxml-lib\curvesapi-1.06.jar C\poi-bin-5.1.0\ooxml-lib\slf4j-api-1.7.32.jar C\poi-bin-5.1.0\ooxml-lib\xmlbeans-5.0.2.jar |
| 2 | Linux export CLASSPATH = $CLASSPATH /usr/share/poi-bin-5.1.0/poi-5.1.0.jar.tar /usr/share/poi-bin-5.1.0/poi-ooxml-5.1.0.tar /usr/share/poi-bin-5.1.0/poi-ooxml-full-5.1.0.tar /usr/share/poi-bin-5.1.0/lib/commons-codec-1.15.jar.tar /usr/share/poi-bin-5.1.0/lib/commons-collections4-4.4.tar /usr/share/poi-bin-5.1.0/lib/commons-io-2.11.0.tar /usr/share/poi-bin-5.1.0/lib/commons-math3-3.6.1.tar /usr/share/poi-bin-5.1.0/lib/log4j-api-2.14.1.tar /usr/share/poi-bin-5.1.0/lib/SparseBitSet-1.2.tar /usr/share/poi-bin-5.1.0/ooxml-lib/commons-compress-1.21.tar /usr/share/poi-bin-5.1.0/ooxml-lib/commons-logging-1.2.tar /usr/share/poi-bin-5.1.0/ooxml-lib/curvesapi-1.06.tar /usr/share/poi-bin-5.1.0/ooxml-lib/slf4j-api-1.7.32.tar /usr/share/poi-bin-5.1.0/ooxml-lib/xmlbeans-5.0.2.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.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
<compilerArgs>
<arg>--add-modules</arg>
<arg>java.se,java.desktop</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
</project>
Apache POI PPT - 類和方法
在本章中,我們將學習 Apache POI API 中的一些類和方法,這些類和方法對於使用 Java 程式處理 PPT 檔案至關重要。
簡報
要建立和管理簡報,您有一個名為 XMLSlideShow 的類,位於org.apache.poi.xslf.usermodel包中。下面是一些此類的重要方法和建構函式。
類 - XMLSlideShow
包 - org.apache.poi.xslf.usermodel
| 序號 | 建構函式和說明 |
|---|---|
| 1 | XMLSlideShow(java.io.InputStream inputStream) 您可以透過向其傳遞 inputstream 類物件來例項化此類。 |
| 序號 | 方法和說明 |
|---|---|
| 1 | int addPicture (byte[] pictureData, int format) 使用此方法,您可以將圖片新增到簡報中。 |
| 2 | XSLFSlide createSlide() 在簡報中建立一個空白幻燈片。 |
| 3 | XSLFSlide createSlide(XSLFSlideLayout layout) 使用給定的幻燈片佈局建立幻燈片。 |
| 4 | java.util.List <XSLFPictureData> getPictureData() 返回簡報中所有圖片的陣列。 |
| 5 | java.awt.Dimension getPageSize() 使用此方法,您可以瞭解當前的頁面大小。 |
| 6 | java.util.List<XSLFSlideMaster> getSlideMasters() 返回簡報中所有幻燈片的列表。 |
| 7 | java.util.List<XSLFSlide> getSlides() 返回簡報中的所有幻燈片。 |
| 8 | XSLFSlide removeSlide(int index) 使用此方法,您可以從簡報中刪除幻燈片。 |
| 9 | void setPageSize(java.awt.Dimension pgSize) 使用此方法,您可以重置頁面大小。 |
| 10 | void setSlideOrder(XSLFSlide slide, int newIndex) 使用此方法,您可以重新排序幻燈片。 |
幻燈片
要建立和管理簡報中的幻燈片,可以使用XSLFSlide類的各種方法。下面提到的是此類的一些重要方法。
類 - XSLFSlide
包 - org.apache.poi.xslf.usermodel
| 序號 | 方法和說明 |
|---|---|
| 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) 將另一個幻燈片的內容複製到此幻燈片。 |
幻燈片母版
它是簡報的元件,具有不同的幻燈片佈局。XSLFSlideMaster類允許您訪問它。下面提到的是此類的一些重要方法。
類 - XSLFSlideMaster
包 - org.apache.poi.xslf.usermodel
| 序號 | 方法和說明 |
|---|---|
| 1 | XSLFBackground getBackground() 返回幻燈片母版的公共背景。 |
| 2 | XSLFSlideLayout getLayout(SlideLayout type) 返回 XSLFSlideLayout 物件。 |
| 3 | java.util.List<XSLFSlideLayout> getSlideLayouts() 返回此幻燈片母版中的所有幻燈片佈局。 |
幻燈片佈局
POI 庫有一個名為XSLFSlideLayout的類,您可以使用它來管理幻燈片的佈局。
類 - XSLFSlideLayout
包 - org.apache.poi.xslf.usermodel
| 序號 | 方法和說明 |
|---|---|
| 1 | void copyLayout(XSLFSlide slide) 此方法將把佔位符從此佈局複製到給定的幻燈片。 |
文字段落
您可以使用XSLFTextParagraph類向幻燈片寫入內容。下面提到的是此類的一些重要方法。
類 - XSLFTextParagraph
包 - org.apache.poi.xslf.usermodel
| 序號 | 方法和說明 |
|---|---|
| 1 | XSLFTextRun addLineBreak() 在段落中插入換行符。 |
| 2 | XSLFTextRun addNewTextRun() 在段落中新增新的文字執行。 |
| 3 | void setBulletAutoNumber(ListAutoNumber scheme, int startAt) 為段落應用自動編號專案符號。 |
| 4 | void setIndent(double value) 設定段落文字的縮排。 |
| 5 | void setLeftMargin(double value) 此方法用於新增段落的左縮排。 |
| 6 | void setLineSpacing(double linespacing) 此方法用於設定段落的行間距。 |
| 7 | void setTextAlign(TextAlign align) 此方法用於設定段落的文字對齊方式。 |
文字執行 (Text Run)
這是文字主體中最底層的文字分割單元。您可以使用XSLFTextRun類來管理段落的文字執行。下面列出了一些此類別的重要方法。
類 - XSLFTextParagraph
包 - org.apache.poi.xslf.usermodel
| 序號 | 方法和說明 |
|---|---|
| 1 | XSLFHyperlink createHyperlink() 在簡報中建立超連結。 |
| 2 | XSLFHyperlink getHyperlink() 此方法用於獲取超連結。 |
| 3 | java.lang.String getText() 將此文字節點的值作為 Java 字串返回。 |
| 4 | void setBold(boolean bold) 此方法用於將文字設定為粗體。 |
| 5 | void setCharacterSpacing(double spc) 設定文字執行中字元之間的間距。 |
| 6 | void setFontColor(java.awt.Color color) 設定文字的字型顏色。 |
| 7 | void setFontSize(double fontSize) 設定文字的字型大小。 |
| 8 | void setItalic(boolean italic) 此方法用於將段落設定為斜體。 |
| 9 | void setStrikethrough(boolean strike) 此方法用於將文字執行格式化為刪除線文字。 |
| 10 | void setSubscript(boolean flag) 此方法用於將文字格式化為下標。 |
| 11 | void setSuperscript(boolean flag) 此方法用於將此執行中的文字格式化為上標。 |
| 12 | void setText(java.lang.String text) 此方法用於設定執行中的文字。 |
| 13 | void setUnderline(boolean underline) 此方法用於為文字執行中的文字新增下劃線。 |
文字形狀 (Text shape)
在 PPT 中,我們有可以容納文字的形狀。我們可以使用XSLFTextShape類來管理這些形狀。下面列出了一些此類別的重要方法。
類 − XSLFTextShape
包 - org.apache.poi.xslf.usermodel
| 序號 | 方法和說明 |
|---|---|
| 1 | void setPlaceholder(Placeholder placeholder) 使用此方法,您可以選擇佔位符。 |
| 2 | Placeholder getTextType() 返回當前佔位符的型別。 |
| 3 | void clearText() 清除當前文字形狀的文字區域。 |
| 4 | XSLFTextParagraph addNewTextParagraph() 向形狀新增新的段落執行。 |
| 5 | void drawContent(java.awt.Graphics2D graphics) 此方法允許您在幻燈片上繪製任何內容。 |
超連結 (HyperLink)
POI 庫有一個名為XSLFHyperlink的類,您可以使用它在簡報中建立超連結。下面列出了一些此類別的重要方法。
類 − XSLFHyperlink
包 - org.apache.poi.xslf.usermodel
| 序號 | 方法和說明 |
|---|---|
| 1 | java.net.URI getTargetURL() 返回簡報幻燈片中存在的 URL。 |
| 2 | void setAddress(java.lang.String address) 此方法用於將地址設定為 URL。 |
| 3 | void setAddress(XSLFSlide slide) 將地址設定為簡報幻燈片中存在的 URL。 |
Apache POI PPT - 簡報
通常,我們使用 MS-PowerPoint 建立簡報。現在讓我們看看如何使用 Java 建立簡報。完成本章後,您將能夠使用您的 Java 程式建立新的 MS-PowerPoint 簡報和開啟現有的 PPT。
建立空簡報
要建立空簡報,您必須例項化org.poi.xslf.usermodel包的XMLSlideShow類−
XMLSlideShow ppt = new XMLSlideShow();
使用FileOutputStream類將更改儲存到 PPT 文件−
File file = new File("C://POIPPT//Examples//example1.pptx");
FileOutputStream out = new FileOutputStream(file);
ppt.write(out);
下面是建立空白 MS-PowerPoint 簡報的完整程式。
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
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 庫,它將編譯並執行以在當前目錄中生成一個名為example1.pptx的空白 PPT 檔案,並在命令提示符上顯示以下輸出:
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);
您可以使用org.poi.xslf.usermodel包中XMLSlideShow類的createSlide()方法向簡報新增幻燈片。
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 slideshow
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 簡報具有幻燈片佈局,您可以選擇所需的佈局來編輯幻燈片。首先,讓我們找出所有可用的幻燈片佈局列表。
有不同的母版,每個母版中都有幾個幻燈片佈局。
您可以使用XMLSlideShow類的getSlideMasters()方法獲取母版的列表。
您可以使用XSLFSlideMaster類的getSlideLayouts()方法從每個母版獲取幻燈片佈局的列表。
您可以使用XSLFSlideLayout類的getType()方法從佈局物件獲取幻燈片佈局的名稱。
注意 − 所有這些類都屬於org.poi.xslf.usermodel包。
下面是獲取 PPT 中可用幻燈片佈局列表的完整程式:
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 − 使用XSLFSlideMaster類的getLayout()方法獲取所需的佈局。此方法接受一個引數,您必須在此引數中傳遞SlideLayout類的靜態變數之一,該變量表示我們所需的佈局。此類中有多個變數,每個變數都表示一個幻燈片佈局。
下面的程式碼片段顯示瞭如何建立標題佈局:
XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
步驟 4 − 透過將幻燈片佈局物件作為引數傳遞來建立一個新的幻燈片。
XSLFSlide slide = ppt.createSlide(titleLayout);
步驟 5 − 使用XSLFSlide類的getPlaceholder()方法選擇佔位符。此方法接受一個整數引數。透過向其傳遞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().get(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("F://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 − 使用XSLFSlideMaster類的getLayout()方法獲取所需的佈局。此方法接受一個引數,您必須在此引數中傳遞SlideLayout類的靜態變數之一,該變量表示我們所需的佈局。此類中有多個變量表示幻燈片佈局。
下面的程式碼片段顯示瞭如何建立標題和內容佈局:
XSLFSlideLayout contentlayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
步驟 4 − 透過將幻燈片佈局物件作為引數傳遞來建立一個新的幻燈片。
XSLFSlide slide = ppt.createSlide(SlideLayout.TITLE_AND_CONTENT);
步驟 5 − 使用XSLFSlide類的getPlaceholder()方法選擇佔位符。此方法接受一個整數引數。透過向其傳遞1,您將獲得XSLFTextShape物件,您可以使用它來訪問幻燈片的內容區域。使用setText()方法設定標題,如下所示。
XSLFTextShape title1 = slide1.getPlaceholder(1);
//setting the title init
title1.setText("Introduction");
步驟 6 − 使用XSLFTextShape類的clearText()方法清除幻燈片中現有的文字。
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().get(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 - 幻燈片管理
完成本章後,您將能夠刪除、重新排序以及對幻燈片執行讀取和寫入操作。
更改幻燈片
我們可以使用XMLSlideShow類的setPageSize()方法更改幻燈片的頁面大小。
首先建立如下所示的簡報:
File file = new File("C://POIPPT//Examples// TitleAndContentLayout.pptx");
//create presentation
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
使用XMLSlideShow類的getPageSize()方法獲取當前幻燈片的大小。
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()方法獲取幻燈片,如下所示:
List<XSLFSlide> slides = ppt.getSlides();
從幻燈片陣列中選擇一個幻燈片,並使用setSlideOrder()方法更改順序,如下所示:
//selecting the fourth slide XSLFSlide selectesdslide = slides.get(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 java.util.List;
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
List<XSLFSlide> slides = ppt.getSlides();
//selecting the fourth slide
XSLFSlide selectesdslide = slides.get(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新增影像以及如何從中讀取影像。
新增影像
您可以使用XSLFSlide的createPicture()方法向簡報新增影像。此方法接受位元組陣列格式的影像。因此,您必須建立要新增到簡報的影像的位元組陣列。
請按照以下步驟向簡報新增影像。使用XMLSlideShow建立空幻燈片放映,如下所示:
XMLSlideShow ppt = new XMLSlideShow();
使用createSlide()在其中建立一個空簡報。
XSLFSlide slide = ppt.createSlide();
讀取要新增的影像檔案,並使用IOUtils類的IOUtils.toByteArray()將其轉換為位元組陣列,如下所示:
//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()方法的用法如下所示:
XSLFPictureData 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.sl.usermodel.PictureData.PictureType;
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
XSLFPictureData idx = ppt.addPicture(picture, PictureType.PNG);
//creating a slide with given picture on it
XSLFPictureShape pic = slide.createPicture(idx);
//creating a file object
File file = new File("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
包含新新增的影像幻燈片的簡報如下所示:
讀取影像
您可以使用XMLSlideShow類的getPictureData()方法獲取所有圖片的資料。以下程式從簡報中讀取影像:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.sl.usermodel.PictureData.PictureType;
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.getPictureData()){
byte[] bytes = data.getData();
String fileName = data.getFileName();
PictureType pictureFormat = data.getType();
System.out.println("picture name: " + fileName);
System.out.println("picture format: " + pictureFormat);
}
//saving the changes to a file
FileOutputStream out = new FileOutputStream(file);
ppt.write(out);
out.close();
}
}
將上述Java程式碼儲存為Readingimage.java,然後從命令提示符編譯並執行它,如下所示:
$javac Readingimage.java $java Readingimage
它將編譯並執行以生成以下輸出:
picture name: image1.png picture format: 6
Apache POI PPT - 建立超連結
在本節中,您將學習如何在簡報中建立超連結。
建立超連結
您可以使用XSLFTextRun類的createHyperlink()方法讀取簡報中的超連結。請按照以下步驟在簡報中建立超連結。
使用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");
使用XSLFTextRun類的createHyperlink()方法建立一個超連結,如下所示:
XSLFHyperlink link = textRun.createHyperlink();
使用XSLFHyperlink類的setAddress()方法將連結地址設定為超連結,如下所示:
link.setAddress("https://tutorialspoint.tw/");
以下是建立簡報中超連結的完整程式:
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().get(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("https://tutorialspoint.tw/");
//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 created successfully");
out.close();
}
}
將上述Java程式碼儲存為CreatingHyperlinks.java,然後從命令提示符編譯並執行它,如下所示:
$javac CreatingHyperlinks.java $java CreatingHyperlinks
它將編譯並執行以生成以下輸出:
slide created successfully
在其主體中包含超連結的新新增的幻燈片如下所示:
Apache POI PPT - 讀取形狀
您可以使用XSLFShape類的getShapeName()方法獲取簡報中使用的形狀數量。以下是從簡報中讀取形狀的程式:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
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
List<XSLFSlide> slide = ppt.getSlides();
//getting the shapes in the presentation
System.out.println("Shapes in the presentation:");
for (int i = 0; i < slide.size(); i++){
List<XSLFShape> sh = slide.get(i).getShapes();
for (int j = 0; j < sh.size(); j++){
//name of the shape
System.out.println(sh.get(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().get(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.setUnderlined(true);
要在段落之間換行,請使用XSLFTextParagraph類的addLineBreak(),如下所示:
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().get(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.0);
//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.0);
//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.setUnderlined(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 - 合併
您可以使用XMLSlideShow類的importContent()方法合併多個簡報。以下是合併兩個簡報的完整程式:
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 java.util.List;
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();
List<XSLFSlide> slide = ppt.getSlides();
BufferedImage img = null;
for (int i = 0; i < slide.size(); 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.get(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
以下快照顯示作為輸入的簡報:
以下是指定位置建立的影像的快照。