很多時候,需要一個軟件應(yīng)用程序來生成Microsoft Office文件格式的報告。 有時,應(yīng)用程序甚至希望接收MS- Office文件作為輸入數(shù)據(jù)。
任何希望生成MS Office文件作為輸出的Java程序員都必須使用預(yù)定義和只讀API來執(zhí)行此操作。
Apache POI是一個流行的API,允許程序員使用Java程序創(chuàng)建,修改和顯示MS-Office文件。 它是由Apache Software Foundation開發(fā)和發(fā)布的一個開源庫。 它包含用于解碼用戶輸入數(shù)據(jù)或?qū)⑽募D(zhuǎn)換為MS Office文檔的類和方法。
Apache POI包含用于MS-Office的所有OLE2復(fù)合文檔的類和方法。 此API的組件列表如下:
POIFS(可疑混淆執(zhí)行文件系統(tǒng)):此組件是所有其他POI元素的基本因素。 它用于顯式讀取不同的文件。
HSSF(可怕的SpreadSheet格式):用于讀取和寫入.xls格式的MS-Excel文件。
XSSF(XML SpreadSheet格式):用于MS-Excel的.xlsx文件格式。
HPSF(可怕屬性集格式):用于提取MS-Office文件的屬性集。
HWPF(可怕字處理器格式):用于讀取和寫入MS-Word的擴(kuò)展文件 .doc 。
XWPF(XML字處理器格式):用于讀取和寫入MS-Word的.docx擴(kuò)展文件。
HSLF(可怕的幻燈片布局格式):用于閱讀,創(chuàng)建和編輯PowerPoint演示文稿。
HDGF(Horrible DiaGram格式):它包含MS-Visio二進(jìn)制文件的類和方法。
HPBF(Horrible PuBlisher格式):用于讀取和寫入MS-Publisher文件。
本教程將指導(dǎo)您完成使用Java進(jìn)行Microsoft PowerPoint演示文稿的過程。 因此,討論限于 XSLF組件。
注意:舊版本的POI支持二進(jìn)制文件格式,如doc,xls,ppt等。版本3.5起,POI支持MS- Office的OOXML文件格式,如docx,xlsx,pptx等。
本章將介紹Java PowerPoint API及其功能的一些風(fēng)格。 有許多供應(yīng)商提供Java PPT相關(guān)的API; 其中一些在本章中考慮。
用于Java的Aspose幻燈片是一個純許可的Java PPT API,由供應(yīng)商 Aspose 開發(fā)和發(fā)布。 這個API的最新版本是8.1.2,于2014年7月發(fā)布。它是一個豐富而重的API(純Java類和AWT類的組合),用于設(shè)計可以讀取,寫入和管理幻燈片的PPT組件。
此API的常見用途如下:
Apache POI是Apache Software Foundation提供的一個100%開源庫。 大多數(shù)中小型應(yīng)用程序開發(fā)人員嚴(yán)重依賴Apache POI(HSLF + XSLF)。 它支持PPT庫的所有基本功能; 然而,渲染和文本提取是其主要特征。 下面給出了用于PPT的Apache POI的架構(gòu)。
本章將介紹在基于Windows和Linux的系統(tǒng)上設(shè)置Apache POI的過程。 Apache POI可以輕松地安裝并與您當(dāng)前的Java環(huán)境集成,遵循幾個簡單的步驟,沒有任何復(fù)雜的設(shè)置過程。 安裝需要用戶管理。
JDK | Java SE 2 JDK 1.5或更高版本 |
---|---|
內(nèi)存 | 1 GB RAM(推薦) |
磁盤空間 | 無最低要求 |
操作系統(tǒng)版本 | Windows XP或以上版本,Linux |
現(xiàn)在讓我們繼續(xù)安裝Apache POI的步驟。
首先,您需要在系統(tǒng)上安裝Java軟件開發(fā)工具包(SDK)。 要驗證此,請根據(jù)您正在處理的平臺執(zhí)行以下兩個命令。
如果Java安裝已正確完成,那么它將顯示Java安裝的當(dāng)前版本和規(guī)范。 下表給出了樣本輸出。
平臺 | 命令 | 示例輸出 |
---|---|---|
Windows | 打開命令控制臺并鍵入: \> java -version | Java版本“1.7.0_60" Java TM SE運(yùn)行時間 環(huán)境(build 1.7.0_60-b19) Java Hotspot(TM)64位服務(wù)器 VM(構(gòu)建24.60-b09,混合模式) |
Linux | 打開命令終端并鍵入: $ java -version | java版本“1.7.0_25" 打開JDK運(yùn)行時環(huán)境(rhel-2.3.10.4.el6_4-x86_64) 打開JDK 64位服務(wù)器虛擬機(jī)(構(gòu)建23.7-b01,混合模式) |
我們假設(shè)本教程的讀者在他們的系統(tǒng)上安裝了Java SDK 1.7.0_60版本。
如果您沒有Java SDK,請從http://www.oracle.com/technetwork/java/javase/downloads/index.html 并安裝它。
將環(huán)境變量JAVA_HOME設(shè)置為指向計算機(jī)上安裝Java的基本目錄位置。 例如,
平臺 | 描述 |
---|---|
Windows | 將JAVA_HOME設(shè)置為 C:\ProgramFiles\java\jdk1.7.0_60 |
Linux | 導(dǎo)出JAVA_HOME = / usr / local / java-current |
將Java編譯器位置的完整路徑附加到系統(tǒng)路徑。
描述 | 描述 |
---|---|
Windows | 將字符串"C:\Program Files\Java\jdk1.7.0_60\bin"附加到系統(tǒng)變量PATH的結(jié)尾。 |
Linux | 導(dǎo)出PATH = $ PATH:$ JAVA_HOME / bin / |
如上所述,從命令提示符處執(zhí)行命令 java -version 。
從 http://poi.apache.org/download 下載最新版本的Apache POI。 html ,并將其內(nèi)容解壓縮到一個文件夾,從中可以將所需的庫鏈接到Java程序。 讓我們假設(shè)文件收集在C驅(qū)動器上的文件夾中。
以下圖像顯示已下載文件夾中的目錄和文件結(jié)構(gòu):
將上述圖片中突出顯示的五個 jars 的完整路徑添加到CLASSPATH。
描述 | 描述 |
---|---|
Windows | 將以下字符串附加到用戶變量CLASSPATH的結(jié)尾: “C:\poi-3.9\poi-3.9-20121203.jar;" “C:\poi-3.9\poi-ooxml-3.9-20121203.jar;" “C:\poi-3.9\poi-ooxml-schemas-3.9-20121203.jar;" “C:\poi-3.9\ooxml-lib\dom4j-1.6.1.jar;" “C:\poi-3.9\ooxml-lib\xmlbeans-2.3.0.jar;.;" |
Linux | 導(dǎo)出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 |
在本章中,我們將了解Apache POI API下的幾個類和方法,這些對于使用Java程序處理PPT文件至關(guān)重要。
要創(chuàng)建和管理演示文稿,您在包 org.apache.poi.xslf.usermodel 中有一個名為XMLSlideShow的類。 下面給出了一些重要的方法和這個類的構(gòu)造函數(shù)。
類:XMLSlideShow
包:org.apache.poi.xslf.usermodel
S.No | 構(gòu)造函數(shù)和說明 |
---|---|
1 | XMLSlideShow(java.io.InputStream inputStream) 你可以通過傳遞一個inputstream類對象來實例化這個類。 |
S.No | 方法和描述 |
---|---|
1 | int addPicture(byte [] pictureData,int format) 使用此方法,您可以向演示文稿添加圖片。 |
2 | XSLFSlide createSlide() 在演示文稿中創(chuàng)建空白幻燈片。 |
3 | XSLFSlide createSlide(XSLFSlideLayout布局) 創(chuàng)建具有給定幻燈片布局的幻燈片。 |
4 | java.util.List< XSLFPictureData> getAllPictures() 返回一個演示文稿中所有圖片的數(shù)組。 |
5 | java.awt.Dimension getPageSize() 使用此方法,您可以了解當(dāng)前頁面大小。 |
6 | XSLFSlideMaster [] getSlideMasters() 返回演示文稿中所有幻燈片的數(shù)組。 |
7 | XSLFSlide [] getSlides() 返回演示文稿中的所有幻燈片。 |
8 | XslFSlide removeSlide(int index) 使用此方法,您可以從演示文稿中刪除幻燈片。 |
9 | void setPageSize(java.awt.Dimension pgSize) 使用此方法,您可以重置頁面大小。 |
10 | void setSlideOrder(XSLFSlide slide,int newIndex) 使用此方法,您可以重新排序幻燈片。 |
要在演示文稿中創(chuàng)建和管理幻燈片,請使用 XSLFSlide 類的方法。 這一類的一些重要方法如下所述。
類:XSLFSlide
套件:org.apache.poi.xslf.usermodel
S.No | 方法和描述 |
---|---|
1 | XSLFBackground getBackground() 返回 XSLFBackground 對象,可用于檢索幻燈片背景的顏色和錨點(diǎn)等詳細(xì)信息。 您還可以使用此對象在幻燈片中繪制形狀。 |
2 | XSLFSlideLayout getSlideLayout() 提供對當(dāng)前幻燈片的 XSLFSlideLayout 對象的訪問。 |
3 | XSLFSlideMaster getSlideMaster() 提供對當(dāng)前幻燈片的幻燈片母版的訪問。 |
4 | XSLFTheme getTheme() 返回當(dāng)前幻燈片的 XSLFTheme 對象。 |
5 | java.lang.String getTitle() 返回當(dāng)前幻燈片的標(biāo)題。 |
6 | XSLFSlide importContent(XSLFSheet src) 將另一張幻燈片的內(nèi)容復(fù)制到此幻燈片。 |
它是演示文稿的組件具有不同的幻燈片布局。 XSLFSlideMaster 類可讓您訪問它。 下面提到這個類的一些重要方法。
類:XSLFSlideMaster
套件:org.apache.poi.xslf.usermodel
S.No | 描述 |
---|---|
1 | XSLFBackground getBackground() 返回幻燈片母版的常用背景。 |
2 | XSLFSlideLayout getLayout(SlideLayout type) 返回XSLFSlideLayout對象。 |
3 | XSLFSlideLayout [] getSlideLayouts() 返回此幻燈片母版中的所有幻燈片布局。 |
POI庫有一個名為 XSLFSlideLayout 的類,您可以使用它來管理幻燈片的布局。
類:XSLFSlideLayout
套件:org.apache.poi.xslf.usermodel
描述 | 方法和說明 |
---|---|
1 | void copyLayout(XSLFSlide幻燈片) 此方法會將占位符從此布局復(fù)制到給定幻燈片。 |
您可以使用 XSLFTextParagraph 類別將內(nèi)容寫入幻燈片。 下面提到這個類的一些重要方法。
類:XSLFTextParagraph
套件:org.apache.poi.xslf.usermodel
S.No | 方法和描述 |
---|---|
1 | XSLFTextRun addLineBreak() 在段落中插入換行符。 |
2 | XSLFTextRun addNewTextRun() 在段落中添加新的文本行。 |
3 | void setBulletAutoNumber(ListAutoNumber scheme,int startAt) 將自動編號的項目符號點(diǎn)應(yīng)用于段落。 |
4 | void setIndent(double value) 將縮進(jìn)設(shè)置為段落中的文本。 |
5 | void setLeftMargin(double value) 此方法用于添加段落的左邊距。 |
6 | void setLineSpacing(double line spacing) 此方法用于在段落中設(shè)置行間距。 |
7 | void setTextAlign(TextAlign align) 此方法用于設(shè)置要設(shè)置為段落的對齊方式。 |
這是文本正文中文本分隔的最低級別。 您可以使用 XSLFTextRun 類來管理段落的文本運(yùn)行。 下面提到這個類的一些重要方法。
類:XSLFTextParagraph
套件:org.apache.poi.xslf.usermodel
S.No | 方法和描述 |
---|---|
1 | XSLFHyperlink createHyperlink() 在演示文稿中創(chuàng)建超鏈接。 |
2 | XSLFHyperlink getHyperlink() 此方法用于獲取超鏈接。 |
3 | java.lang.String getText() 以Java字符串形式返回此Text節(jié)點(diǎn)的值。 |
4 | void setBold(boolean bold) 此方法用于以粗體設(shè)置文本。 |
5 | void setCharacterSpacing(double spc) 設(shè)置文本運(yùn)行中的字符之間的間距。 |
6 | void setFontColor(java.awt.Color color) 設(shè)置文本的字體顏色。 |
7 | void setFontSize(double fontSize) 設(shè)置文本的字體大小。 |
8 | void setItalic(boolean italic) 這個方法用于使段落斜體。 |
9 | void setStrikethrough(boolean strike) 此方法用于將一段文本格式化為刪除線文本。 |
10 | void setSubscript(boolean flag) 此方法用于將文本格式化為下標(biāo)。 |
11 | void setSuperscript(boolean flag) 此方法用于將此運(yùn)行中的文本格式化為上標(biāo)。 |
12 | void setText(java.lang.String text) 此方法用于在運(yùn)行中設(shè)置文本。 |
13 | void setUnderline(Boolean underline) 此方法用于在文本運(yùn)行中對文本加下劃線。 |
在PPT中,我們有可以在其中保存文本的形狀。 我們可以使用 XSLFTextShape 類來管理這些。 下面提到這個類的一些重要方法。
類:XSLFTextShape
套件:org.apache.poi.xslf.usermodel
S.No | 方法和描述 |
---|---|
1 | void setPlaceholder(Placeholder placeholder) 使用此方法,您可以選擇占位符。 |
2 | Placeholder getTextType() 返回當(dāng)前占位符的類型。 |
3 | void clearText() 清除當(dāng)前文本形狀的文本區(qū)域。 |
4 | XSLFTextParagraph addNewTextParagraph() 向形狀添加新的段落運(yùn)行。 |
5 | void drawContent(java.awt.Graphics2D graphics) 此方法允許您在幻燈片上繪制任何內(nèi)容。 |
POI庫具有一個名為 XSLFHyperlink 的類,您可以使用它在演示文稿中創(chuàng)建一個超鏈接。 下面提到這個類的一些重要方法。
類:XSLFHyperlink
套件:org.apache.poi.xslf.usermodel
S.No | 方法和描述 |
---|---|
1 | java.net.URI getTargetURL() 返回演示文稿幻燈片中存在的網(wǎng)址。 |
2 | void setAddress(java.lang.String address) 此方法用于將地址設(shè)置為URL。 |
3 | void setAddress(XSLFSlide幻燈片) 將地址設(shè)置為演示文稿幻燈片中顯示的網(wǎng)址。 |
一般來說,我們使用MS-PowerPoint來創(chuàng)建演示文稿。 現(xiàn)在讓我們看看如何使用Java創(chuàng)建演示文稿。 完成本章后,您將能夠創(chuàng)建新的MS-PowerPoint演示文稿,并使用您的Java程序打開現(xiàn)有的PPT。
要創(chuàng)建空的演示文稿,您必須實例化 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);
以下是創(chuàng)建空白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 ,然后從命令提示符處編譯并執(zhí)行它,如下所示:
$javac CreatePresentation.java $java CreatePresentation
如果您的系統(tǒng)環(huán)境配置有POI庫,它將編譯并執(zhí)行,以在當(dāng)前目錄中生成名為 example1.pptx 的空白PPT文件,并在命令提示符下顯示以下輸出:
Presentation created successfully
空白PowerPoint文檔顯示如下:
要打開現(xiàn)有的演示文稿,請實例化 XMLSlideShow 類,并將要編輯的文件的 FileInputStream 對象作為 XMLSlideShow 構(gòu)造函數(shù)的參數(shù)傳遞 。
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();
下面給出了打開和添加幻燈片到現(xiàn)有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 ,然后從命令提示符處編譯并執(zhí)行,如下所示:
$javac EditPresentation.java $java EditPresentation
它將編譯并執(zhí)行以生成以下輸出:
slides successfully added
帶有新添加的幻燈片的輸出PPT文檔如下所示:
將幻燈片添加到PPT后,您可以在幻燈片上添加,執(zhí)行,讀取和寫入操作。
在上一章中,您已經(jīng)了解了如何創(chuàng)建空白幻燈片以及如何向其添加幻燈片。 在本章中,您將學(xué)習(xí)如何獲取可用幻燈片的列表,以及如何創(chuàng)建具有不同布局的幻燈片。
PowerPoint演示文稿具有幻燈片布局,您可以選擇所需的布局來編輯幻燈片。 首先,讓我們找出所有可用的幻燈片布局的列表。
有不同的幻燈片母版,在每個幻燈片母版中,有幾個幻燈片布局。
您可以使用 XMLSlideShow 類的 getSlideMasters()方法獲取幻燈片主題列表。
您可以使用 XSLFSlideMaster 類的 getSlideLayouts()方法從每個幻燈片母帶獲取幻燈片布局的列表。
您可以使用 XSLFSlideLayout 類的 getType()方法從布局對象獲取幻燈片布局的名稱。
注意:所有這些類都屬于 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 ,然后從命令提示符處編譯并執(zhí)行,如下所示:
$javac SlideLayouts.java $java SlideLayouts
它將編譯并執(zhí)行以生成以下輸出:
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版本提供的一些示例幻燈片布局。
讓我們使用標(biāo)題布局在PPT中創(chuàng)建幻燈片。 請按照以下步驟操作:
步驟1 :通過實例化 XMLSlideShow 類創(chuàng)建一個空的演示文稿,如下所示:
XMLSlideShow ppt = new XMLSlideShow();
步驟2 :使用 getSlideMasters()方法獲取幻燈片主題列表。 此后,使用索引選擇所需的幻燈片母帶,如下所示:
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
這里我們得到的默認(rèn)幻燈片母版是在幻燈片主數(shù)據(jù)的第0位置。
步驟3 :使用 XSLFSlideMaster 類的 getLayout()方法獲取所需的布局。 此方法接受一個參數(shù),您必須傳遞 SlideLayoutclass 的靜態(tài)變量之一,代表我們所需的布局。 這個類中有幾個變量,每個變量代表一個幻燈片布局。
下面的代碼片段顯示了如何創(chuàng)建標(biāo)題布局:
XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
步驟4 :通過將幻燈片布局對象作為參數(shù)傳遞來創(chuàng)建新幻燈片。
XSLFSlide slide = ppt.createSlide(titleLayout);
第5步:使用 XSLFSlide 類的 getPlaceholder()方法選擇占位符。 此方法接受整數(shù)參數(shù)。 通過傳遞0到它,你會得到 XSLFTextShape 對象,使用它可以訪問幻燈片的標(biāo)題文本區(qū)域。 使用setText()方法設(shè)置標(biāo)題,如下所示:
XSLFTextShape title1 = slide.getPlaceholder(0); //setting the title init title1.setText("Tutorials point");
下面給出的是在演示文稿中創(chuàng)建帶有標(biāo)題布局的幻燈片的完整程序:
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,然后從命令提示符處編譯并執(zhí)行它,如下所示:
$javac TitleLayout.java $java TitleLayout
它將編譯并執(zhí)行以生成以下輸出。
slide created successfully
帶有新添加的標(biāo)題布局幻燈片的PPT文檔如下所示:
讓我們使用標(biāo)題和內(nèi)容布局在PPT中創(chuàng)建幻燈片。 按照下面給出的步驟。
步驟1 :通過實例化 XMLSlideShow 類創(chuàng)建一個空的演示文稿,如下所示:
XMLSlideShow ppt = new XMLSlideShow();
步驟2 :使用 getSlideMasters()方法獲取幻燈片主題列表。 使用索引選擇所需的幻燈片母帶,如下所示:
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
這里我們得到的默認(rèn)幻燈片母版是在幻燈片主數(shù)據(jù)的第0位置。
步驟3 :使用 XSLFSlideMaster 類的 getLayout()方法獲取所需的布局。 此方法接受一個參數(shù),您必須傳遞代表我們所需布局的 SlideLayout 類的靜態(tài)變量之一。 這個類中有幾個變量代表幻燈片布局。
以下代碼段顯示如何創(chuàng)建標(biāo)題和內(nèi)容布局:
XSLFSlideLayout contentlayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
步驟4 :通過將幻燈片布局對象作為參數(shù)傳遞來創(chuàng)建新幻燈片。
XSLFSlide slide = ppt.createSlide(SlideLayout.TITLE_AND_CONTENT);
第5步:使用 XSLFSlide 類的 getPlaceholder()方法選擇占位符。 此方法接受整數(shù)參數(shù)。 通過傳遞1給它,你會得到 XSLFTextShape 對象,使用它可以訪問幻燈片的內(nèi)容區(qū)域。 使用setText()方法設(shè)置標(biāo)題,如下所示:
XSLFTextShape title1 = slide1.getPlaceholder(1); //setting the title init title1.setText("Introduction");
步驟6 :使用 XSLFTextShape 類別的 clearText()方法清除投影片中現(xiàn)有的文字。
body.clearText();
步驟7 :使用 addNewTextParagraph()方法添加新段落。 現(xiàn)在使用 addNewTextRun()方法向段落中添加一個新的文本運(yùn)行。 現(xiàn)在到文本運(yùn)行,使用 setText()方法添加文本,如下所示:
body.addNewTextParagraph().addNewTextRun().setText("this is my first slide body");
下面給出的是在演示文稿中創(chuàng)建帶有標(biāo)題布局的幻燈片的完整程序:
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 ,然后從命令提示符處編譯并執(zhí)行它,如下所示:
$javac TitleLayout.java $java TitleLayout
它將編譯并執(zhí)行以生成以下輸出:
slide created successfully
帶有新添加的標(biāo)題布局幻燈片的PPT文檔如下所示:
以同樣的方式,您也可以創(chuàng)建具有不同布局的幻燈片。
完成本章后,您將能夠在幻燈片上刪除,重新排序和執(zhí)行讀取和寫入操作。
我們可以使用 XMLSlideShow 類的 setPageSize()方法更改幻燈片的頁面大小。
最初創(chuàng)建演示文稿如下所示:
File file=new File("C://POIPPT//Examples// TitleAndContentLayout.pptx"); //create presentation XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
使用 XMLSlideShow 類的 getPageSize()方法獲取當(dāng)前幻燈片的大小。
java.awt.Dimension pgsize = ppt.getPageSize();
使用 setPageSize()方法設(shè)置頁面的大小。
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 ,然后從命令提示符處編譯并執(zhí)行它,如下所示:
$javac ChangingSlide.java $java ChangingSlide
它將編譯并執(zhí)行以生成以下輸出。
current page size of the presentation is : width :720 height :540 slide size changed to given dimensions
以下是更改幻燈片大小之前演示文稿的快照:
更改其大小后,幻燈片顯示如下:
您可以使用 setSlideOrder()方法設(shè)置幻燈片順序。 下面給出了設(shè)置幻燈片順序的過程。
打開現(xiàn)有PPT文檔,如下所示:
File file=new File("C://POIPPT//Examples//example1.pptx"); XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
使用 getSlides()方法獲取幻燈片,如下所示:
XSLFSlide[] slides =ppt.getSlides();
從幻燈片數(shù)組中選擇一張幻燈片,然后使用 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 ,然后從命令提示符處編譯并執(zhí)行,如下所示:
$javac ReorderSlide.java $java ReorderSlide
它將編譯并執(zhí)行以生成以下輸出。
Reordering of the slides is done
下面是重新排序幻燈片之前的演示的快照:
重新排序幻燈片后,演示文稿如下所示。 在這里,我們選擇了幻燈片與圖像,并將其移動到頂部。
您可以使用 removeSlide()方法刪除幻燈片。 按照以下步驟刪除幻燈片。
使用 XMLSlideShow 類打開現(xiàn)有演示文稿,如下所示:
File file=new File("C://POIPPT//Examples//image.pptx"); XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
使用 removeSlide()方法刪除所需的幻燈片。 此方法接受整數(shù)參數(shù)。 將要刪除的幻燈片的索引傳遞給此方法。
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 ,然后從命令提示符處編譯并執(zhí)行,如下所示:
$javac Deleteslide.java $java Deleteslide
它將編譯并執(zhí)行以生成以下輸出:
reordering of the slides is done
下面的快照是刪除幻燈片之前的演示文稿:
刪除幻燈片后,演示顯示如下:
在本章中,您將學(xué)習(xí)如何將圖像添加到PPT以及如何從中讀取圖像。
您可以使用 XSLFSlide 的 createPicture()方法將圖片添加到演示文稿。 此方法接受以字節(jié)數(shù)組格式形式的圖像。 因此,您必須創(chuàng)建要添加到演示文稿的圖像的字節(jié)數(shù)組。
按照給定的過程向演示文稿添加圖像。 使用 XMLSlideShow 創(chuàng)建空白幻燈片,如下所示:
XMLSlideShow ppt = new XMLSlideShow();
使用 createSlide()創(chuàng)建一個空的演示文稿。
XSLFSlide slide = ppt.createSlide();
使用 IOUtils 類的 IOUtils.toByteArray()讀取要添加的圖像文件并將其轉(zhuǎn)換為字節(jié)數(shù)組,如下所示:
//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()將圖片添加到演示文稿。 此方法接受兩個變量:要添加的圖像的字節(jié)數(shù)組格式和表示圖像的文件格式的靜態(tài)變量。 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 ,然后從命令提示符處編譯并執(zhí)行,如下所示:
$javac AddingImage.java $java AddingImage
它將編譯并執(zhí)行以生成以下輸出:
reordering of the slides is done
帶有新添加的帶有圖像的幻燈片的演示文稿如下所示:
您可以使用 XMLSlideShow 類的 getAllPictures()方法獲取所有圖片的數(shù)據(jù)。 以下程序從演示文稿讀取圖像:
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 ,然后從命令提示符處編譯并執(zhí)行,如下所示:
$javac Readingimage.java $java Readingimage
它將編譯并執(zhí)行以生成以下輸出:
picture name: image1.png picture format: 6
在本章中,您將學(xué)習(xí)如何在演示文稿中創(chuàng)建超鏈接。
您可以使用 XSLFTextRun 類的 createHyperlink()方法讀取演示文稿中的超鏈接。 按照下面給出的過程在演示中創(chuàng)建超鏈接。
使用 XMLSlideShow 類創(chuàng)建一個空的演示文稿,如下所示:
XMLSlideShow ppt = new XMLSlideShow();
創(chuàng)建一個空白幻燈片,并使用正文和內(nèi)容布局創(chuàng)建幻燈片的文本框和正文。
//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();
創(chuàng)建一個文本運(yùn)行對象并設(shè)置文本到它,如下所示:
XSLFTextRun textRun=body.addNewTextParagraph().addNewTextRun(); textRun.setText("Tutorials point");
使用 XSLFTextRun 類的 createHyperlink()方法創(chuàng)建超鏈接,如下所示:
XSLFHyperlink link = textRun.createHyperlink();
使用 XSLFHyperlink 類的 setAddress()方法將鏈接地址設(shè)置為超鏈接,如下所示:
link.setAddress("//o2fo.com/");
下面給出了在演示文稿中創(chuàng)建超鏈接的完整程序:
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("//o2fo.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代碼保存為 CreatingHyperlinks.java ,然后從命令提示符處編譯并執(zhí)行,如下所示:
$javac CreatingHyperlinks.java $java CreatingHyperlinks
它將編譯并執(zhí)行以生成以下輸出:
slide cretated successfully
新添加的幻燈片及其正文中的超鏈接如下所示:
您可以使用 XSLFShape 類的方法 getShapeName()來計算演示文稿中使用的形狀數(shù)量。 下面給出的是從演示中讀取形狀的程序:
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 ,然后從命令提示符處編譯并執(zhí)行,如下所示:
$javac ReadingShapes.java $java ReadingShapes
它將編譯并執(zhí)行以生成以下輸出。
Shapes in the presentation: Rectangle 1 Oval 1 Isosceles Triangle 1
新添加的具有各種形狀的幻燈片顯示如下:
可以使用 XSLFTextRun 類的方法來格式化演示文稿中的文本。 為此,您必須通過選擇一個幻燈片布局來創(chuàng)建一個 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()設(shè)置演示文稿中文本的字體大小。
run.setFontColor(java.awt.Color.red); run.setFontSize(24);
以下代碼段顯示了如何對演示文稿中的文字應(yīng)用不同的格式樣式(粗體,斜體,下劃線,刪除線)。
//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);
要在段落之間使用換行符,請使用 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()[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 line1 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 line2 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 line3 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 line4 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 ,然后從命令提示符處編譯并執(zhí)行,如下所示:
$javac TextFormating.java $java TextFormating
它將編譯并執(zhí)行以生成以下輸出:
Formatting completed successfully
帶有格式化文本的幻燈片如下所示:
您可以使用 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 ,然后從命令提示符處編譯并執(zhí)行它,如下所示:
$javac MergingMultiplePresentations.java $java MergingMultiplePresentations
它將編譯并執(zhí)行以生成以下輸出:
Merging done successfully
以下快照顯示第一個演示:
以下快照顯示第二個演示:
下面給出合并兩個幻燈片后程序的輸出。 在這里您可以看到合并在一起的早期幻燈片的內(nèi)容。
您可以將演示文稿轉(zhuǎn)換為圖像文件。 以下程序顯示了如何去做。
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 PpttoPNG { public static void main(String args[]) throws IOException{ //creating an empty presentation File file=new File("addingimage.pptx"); XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file)); //getting the dimensions and size of the slide Dimension pgsize = ppt.getPageSize(); XSLFSlide[] slide = ppt.getSlides(); for (int i = 0; i < slide.length; i++) { BufferedImage 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 ,然后從命令提示符處編譯并執(zhí)行它,如下所示:
$javac PpttoPNG.java $java PpttoPNG
它將編譯并執(zhí)行以生成以下輸出:
Image created successfully
以下快照顯示了作為輸入的演示:
下面給出了在指定位置創(chuàng)建的映像的快照。
更多建議: