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
幻灯片大小更改为给定尺寸

下面是更改幻灯片大小之前的演示文稿快照 −

TitleAndContentLayout

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

SlideAfterChange

重新排序幻灯片

您可以使用 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

它负责编译并执行以生成以下输出。

幻灯片重新排序已完成

下面是重新排序幻灯片之前的演示文稿快照 −

Before Reorder

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

After Reorder

删除幻灯片

您可以使用 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

它将编译并执行以生成以下输出 −

幻灯片的重新排序已完成

以下快照是删除幻灯片之前的演示文稿 −

After Reorder

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

Delete Slides