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 文档如下所示 -
    TitleLayOut
  • 标题和内容布局

    让我们使用标题和内容布局在 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文档出现如下 −
    TitleAndContentLayout
    同样,您也可以创建具有不同布局的幻灯片。