Apache POI PPT - 幻灯片布局
-
简述
在上一章中,您已经了解了如何创建空幻灯片以及如何向其中添加幻灯片。 在本章中,您将学习如何获取可用幻灯片的列表,以及如何创建具有不同布局的幻灯片。 -
可用的幻灯片布局
PowerPoint 演示文稿具有幻灯片布局,您可以选择所需的布局来编辑幻灯片。首先,让我们找出所有可用幻灯片布局的列表。-
有不同的幻灯片母版,每个幻灯片母版中都有几种幻灯片版式。
-
您可以使用 XMLSlideShow 类的 getSlideMasters() 方法获取幻灯片母版列表。
-
您可以使用 XSLFSlideMastergetSlideLayouts() 方法从每个幻灯片母版中获取幻灯片版式列表b> 类。
-
可以使用XSLFSlideLayoutgetType()方法从布局对象中获取幻灯片布局的名称b> 类。
注意 - 所有这些类都属于 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];
这里我们得到了默认的幻灯片母版,它位于幻灯片母版数组的第 0th 位置。步骤 3 - 使用 的 getLayout() 方法获取所需的布局 XSLFSlideMaster 类。 此方法接受一个参数,您必须在其中传递 SlideLayoutclass 的静态变量之一,它代表我们所需的布局。 这个类中有几个变量,每个变量代表一个幻灯片布局。下面给出的代码片段显示了如何创建标题布局 -XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
步骤 4 − Create a new slide by passing a slide layout object as parameter.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 - 使用 的 getLayout() 方法获取所需的布局 XSLFSlideMaster 类。 此方法接受一个参数,您必须在其中传递 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文档出现如下 −同样,您也可以创建具有不同布局的幻灯片。