Apache POI PPT - 幻灯片管理
完成本章后,您将能够删除、重新排序幻灯片,并对幻灯片执行读写操作。
更改幻灯片
我们可以使用 XMLSlideShow 类的 setPageSize() 方法更改幻灯片的页面大小。
最初创建一个演示文稿,如下所示 −
File file = new File("C://POIPPT//Examples// TitleAndContentLayout.pptx"); //创建演示文稿 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 { //创建文件对象 File file = new File("TitleAndContentLayout.pptx"); //创建演示文稿 XMLSlideShow ppt = new XMLSlideShow(); //获取当前页面大小 java.awt.Dimension pgsize = ppt.getPageSize(); int pgw = pgsize.width; //幻灯片宽度(以点为单位) int pgh = pgsize.height; //幻灯片高度(以点为单位) System.out.println("当前 PPT 页面大小为:"); System.out.println("宽度:" + pgw); System.out.println("高度:" + pgh); //设置新页面大小 ppt.setPageSize(new java.awt.Dimension(2048,1536)); //创建文件对象 FileOutputStream out = new FileOutputStream(file); //将更改保存到文件 ppt.write(out); System.out.println("幻灯片大小已更改为给定尺寸"); out.close(); } }
将上述 Java 代码保存为 ChangingSlide.java,然后编译并从命令提示符执行,如下所示 −
$javac ChangingSlide.java $java ChangingSlide
它负责编译并执行以生成以下输出。
当前 PPT 页面大小为: 宽度:720 高度:540 幻灯片大小更改为给定尺寸
下面是更改幻灯片大小之前的演示文稿快照 −

更改大小后幻灯片显示如下 −

重新排序幻灯片
您可以使用 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() 方法更改顺序,如下所示 −
//选择第四张幻灯片 XSLFSlide selectesdslide = slides.get(4); //将其置于顶部 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 { //打开现有演示文稿 File file = new File("example1.pptx"); XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file)); //获取幻灯片 List<XSLFSlide> slides = ppt.getSlides(); //选择第四张幻灯片 XSLFSlide selectesdslide = slides.get(13); //将其置于顶部 ppt.setSlideOrder(selectesdslide, 0); //创建文件对象 FileOutputStream out = new FileOutputStream(file); //将更改保存到文件 ppt.write(out); out.close(); } }
将上述 Java 代码保存为 ReorderSlide.java,然后从命令提示符编译并执行,如下所示 −
$javac ReorderSlide.java $java ReorderSlide
它负责编译并执行以生成以下输出。
幻灯片重新排序已完成
下面是重新排序幻灯片之前的演示文稿快照 −

重新排序幻灯片后,演示文稿显示如下。这里我们选择了带图片的幻灯片并将其移至顶部。

删除幻灯片
您可以使用 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 { //打开现有幻灯片 File file = new File("image.pptx"); XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file)); //删除幻灯片 ppt.removeSlide(1); //创建文件对象 FileOutputStream out = new FileOutputStream(file); //将更改保存到演示文稿 ppt.write(out); out.close(); } }
将上述 Java 代码保存为 Deleteslide.java,然后从命令提示符编译并执行,如下所示 −
$javac Deleteslide.java $java Deleteslide
它将编译并执行以生成以下输出 −
幻灯片的重新排序已完成
以下快照是删除幻灯片之前的演示文稿 −

删除幻灯片后,演示文稿显示如下 −
