📅  最后修改于: 2020-11-18 08:50:37             🧑  作者: Mango
在上一章中,您已经了解了如何创建空白幻灯片以及如何向其中添加幻灯片。在本章中,您将学习如何获取可用幻灯片的列表,以及如何创建具有不同布局的幻灯片。
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 ,然后从命令提示符下编译并执行它,如下所示:
$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()方法获取所需的布局。此方法接受一个参数,您必须在其中传递SlideLayoutclass的静态变量之一,该变量表示我们所需的布局。此类中有几个变量,其中每个变量代表幻灯片的布局。
下面给出的代码片段显示了如何创建标题布局-
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()[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,然后从命令提示符下编译并执行它,如下所示-
$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()[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文档如下所示-
同样,您也可以创建具有不同布局的幻灯片。