Apache POI PPT - 幻灯片布局

在上一章中,您已经了解了如何创建空幻灯片以及如何向其添加幻灯片.在本章中,您将学习如何获取可用幻灯片列表,以及如何创建具有不同布局的幻灯片.

可用幻灯片布局

PowerPoint演示文稿具有幻灯片布局,您可以选择所需的布局来编辑幻灯片.首先,让我们找出所有可用幻灯片布局的列表.

  • 有不同的幻灯片母版和每个幻灯片母版,有几个幻灯片布局.

  • 您可以使用 getSlideMasters()方法获取幻灯片母版列表 XMLSlideShow 类.

  • 您可以使用 getSlideLayouts获取每个幻灯片母版的幻灯片布局列表( XSLFSlideMaster 类的方法.

  • 您可以使用布局对象获取幻灯片布局的名称 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 th 位置.

第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文档显示如下 :

TitleLayOut

标题和内容布局

让我们使用标题和内容布局在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文档显示如下 :

image

同样,您也可以使用不同的布局创建幻灯片.