幻灯片布局

幻灯片布局包含所有出现在幻灯片上的内容的占位符框和格式信息。布局决定了可用内容占位符及其位置。

幻灯片布局允许您快速创建和设计演示文稿(无论是简单还是复杂)。以下是一些在PowerPoint演示文稿中使用最广泛的幻灯片布局:

  • 标题幻灯片布局。该布局由两个文本占位符组成。一个占位符用于标题,另一个用于副标题。
  • 标题和内容布局。该布局在顶部包含一个相对较小的占位符用于标题,下面则是一个更大的占位符用于核心内容(图表、段落、项目符号列表、编号列表、图像等)。
  • 空白布局。该布局没有占位符,因此允许您从头开始创建元素。

由于幻灯片母版是存储关于幻灯片布局信息的顶级层次幻灯片,您可以使用母版幻灯片访问幻灯片布局并对其进行更改。可以通过类型或名称访问布局幻灯片。类似地,每个幻灯片都有一个唯一的ID,可以用于访问它。

另外,您可以直接对演示文稿中的特定幻灯片布局进行更改。

将幻灯片布局添加到演示文稿

  1. 创建一个 Presentation 类的实例。
  2. 访问 MasterSlide 集合
  3. 遍历现有的布局幻灯片,以确认所需的布局幻灯片是否已在布局幻灯片集合中存在。否则,添加您需要的布局幻灯片。
  4. 根据新布局幻灯片添加一个空白幻灯片。
  5. 保存演示文稿。

以下Java代码演示了如何将幻灯片布局添加到PowerPoint演示文稿:

// 实例化一个表示演示文稿文件的Presentation类
Presentation pres = new Presentation("AccessSlides.pptx");
try {
    // 遍历布局幻灯片类型
    IMasterLayoutSlideCollection layoutSlides = pres.getMasters().get_Item(0).getLayoutSlides();
    ILayoutSlide layoutSlide = null;

    if (layoutSlides.getByType(SlideLayoutType.TitleAndObject) != null)
        layoutSlide = layoutSlides.getByType(SlideLayoutType.TitleAndObject);
    else
        layoutSlide = layoutSlides.getByType(SlideLayoutType.Title);

    if (layoutSlide == null) {
        // 演示文稿不包含某些布局类型的情况。
        // 演示文稿文件仅包含空白和自定义布局类型。
        // 但是自定义类型的布局幻灯片具有不同的幻灯片名称,
        // 像 "标题"、"标题和内容" 等。这可以用来选择布局幻灯片。
        // 您也可以使用一组占位符形状类型。例如,
        // 标题幻灯片应该只有标题占位符类型等。
        for (ILayoutSlide titleAndObjectLayoutSlide : layoutSlides) {
            if (titleAndObjectLayoutSlide.getName() == "Title and Object") {
                layoutSlide = titleAndObjectLayoutSlide;
                break;
            }
        }
        if (layoutSlide == null) {
            for (ILayoutSlide titleLayoutSlide : layoutSlides) {
                if (titleLayoutSlide.getName() == "Title") {
                    layoutSlide = titleLayoutSlide;
                    break;
                }
            }
            if (layoutSlide == null) {
                layoutSlide = layoutSlides.getByType(SlideLayoutType.Blank);
                if (layoutSlide == null) {
                    layoutSlide = layoutSlides.add(SlideLayoutType.TitleAndObject, "Title and Object");
                }
            }
        }
    }

    // 添加一个带有新布局幻灯片的空白幻灯片
    pres.getSlides().insertEmptySlide(0, layoutSlide);

    // 将演示文稿保存到磁盘
    pres.save("output.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}

移除未使用的布局幻灯片

Aspose.Slides提供了 removeUnusedLayoutSlides 方法,来自 Compress 类,以允许您删除不必要和未使用的布局幻灯片。以下Java代码演示了如何从PowerPoint演示文稿中删除一个布局幻灯片:

Presentation pres = new Presentation("pres.pptx");
try {
    Compress.removeUnusedLayoutSlides(pres);

    pres.save("pres-out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

为幻灯片布局设置大小和类型

为了允许您为特定布局幻灯片设置大小和类型,Aspose.Slides提供了 getType()getSize() 属性(来自 Presentation 类)。以下Java代码演示了这个操作:

// 实例化一个表示演示文稿文件的Presentation对象
Presentation presentation = new Presentation("demo.pptx");
try {
    Presentation auxPresentation = new Presentation();
    try {
        // 将生成的演示文稿的幻灯片大小设置为源的幻灯片大小
        auxPresentation.getSlideSize().setSize(540, 720, SlideSizeScaleType.EnsureFit);
        //getType());
        auxPresentation.getSlideSize().setSize(SlideSizeType.A4Paper, SlideSizeScaleType.Maximize);
        
        // 克隆所需的幻灯片
        auxPresentation.getSlides().addClone(presentation.getSlides().get_Item(0));
        auxPresentation.getSlides().removeAt(0);
        
        // 将演示文稿保存到磁盘
        auxPresentation.save("size.pptx", SaveFormat.Pptx);
    } finally {
        auxPresentation.dispose();
    }
} finally {
    presentation.dispose();
}

设置幻灯片内页脚可见性

  1. 创建一个 Presentation 类的实例。
  2. 通过索引获取幻灯片的引用。
  3. 设置幻灯片页脚占位符为可见。
  4. 设置日期时间占位符为可见。
  5. 保存演示文稿。

以下Java代码演示了如何设置幻灯片页脚的可见性(并执行相关任务):

Presentation presentation = new Presentation("presentation.ppt");
try {
    IBaseSlideHeaderFooterManager headerFooterManager = presentation.getSlides().get_Item(0).getHeaderFooterManager();
    if (!headerFooterManager.isFooterVisible()) // 方法isFooterVisible用于指定幻灯片页脚占位符缺失
    {
        headerFooterManager.setFooterVisibility(true); // 方法setFooterVisibility用于设置幻灯片页脚占位符为可见
    }
    if (!headerFooterManager.isSlideNumberVisible()) // 方法isSlideNumberVisible用于指定幻灯片页码占位符缺失
    {
        headerFooterManager.setSlideNumberVisibility(true); // 方法setSlideNumberVisibility用于设置幻灯片页码占位符为可见
    }
    if (!headerFooterManager.isDateTimeVisible()) // 方法isDateTimeVisible用于指定幻灯片日期时间占位符缺失
    {
        headerFooterManager.setDateTimeVisibility(true); // 方法SetFooterVisibility用于设置幻灯片日期时间占位符为可见
    }
    headerFooterManager.setFooterText("页脚文本"); // 方法SetFooterText用于设置幻灯片页脚占位符的文本
    headerFooterManager.setDateTimeText("日期和时间文本"); // 方法SetDateTimeText用于设置幻灯片日期时间占位符的文本
} finally {
    presentation.dispose();
}

设置幻灯片内子页脚可见性

  1. 创建一个 Presentation 类的实例。
  2. 通过索引获取母版幻灯片的引用。
  3. 设置母版幻灯片及所有子页脚占位符为可见。
  4. 为母版幻灯片和所有子页脚占位符设置文本。
  5. 为母版幻灯片和所有子日期时间占位符设置文本。
  6. 保存演示文稿。

以下Java代码演示了这个操作:

Presentation presentation = new Presentation("presentation.ppt");
try {
    IMasterSlideHeaderFooterManager headerFooterManager = presentation.getMasters().get_Item(0).getHeaderFooterManager();
    headerFooterManager.setFooterAndChildFootersVisibility(true); // 方法setFooterAndChildFootersVisibility用于设置母版幻灯片及所有子页脚占位符为可见
    headerFooterManager.setSlideNumberAndChildSlideNumbersVisibility(true); // 方法setSlideNumberAndChildSlideNumbersVisibility用于设置母版幻灯片及所有子页码占位符为可见
    headerFooterManager.setDateTimeAndChildDateTimesVisibility(true); // 方法setDateTimeAndChildDateTimesVisibility用于设置母版幻灯片及所有子日期时间占位符为可见

    headerFooterManager.setFooterAndChildFootersText("页脚文本"); // 方法setFooterAndChildFootersText用于设置母版幻灯片及所有子页脚占位符的文本
    headerFooterManager.setDateTimeAndChildDateTimesText("日期和时间文本"); // 方法setDateTimeAndChildDateTimesText用于设置母版幻灯片及所有子日期时间占位符的文本
} finally {
    presentation.dispose();
}

根据内容缩放设置幻灯片大小

  1. 创建一个 Presentation 类的实例,并加载包含您想要设置大小的幻灯片的演示文稿。
  2. 创建另一个 Presentation 类的实例以生成新的演示文稿。
  3. 通过索引获取幻灯片的引用(来自第一份演示文稿)。
  4. 设置幻灯片页脚占位符为可见。
  5. 设置日期时间占位符为可见。
  6. 保存演示文稿。

以下Java代码演示了这个操作:

// 实例化一个表示演示文稿文件的Presentation对象
Presentation presentation = new Presentation("demo.pptx");
try {
    // 将生成的演示文稿的幻灯片大小设置为源的幻灯片大小
    presentation.getSlideSize().setSize(540, 720, SlideSizeScaleType.EnsureFit); // 方法SetSize用于设置幻灯片大小,同时缩放内容以确保适合
    presentation.getSlideSize().setSize(SlideSizeType.A4Paper, SlideSizeScaleType.Maximize); // 方法SetSize用于设置幻灯片大小为内容的最大大小

    // 将演示文稿保存到磁盘
    presentation.save("Set_Size&Type_out.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

生成PDF时设置页面大小

某些演示文稿(如海报)通常转换为PDF文档。如果您希望将PowerPoint转换为PDF以访问最佳打印和可访问选项,您需要将幻灯片设置为适合PDF文档的大小(例如A4)。

Aspose.Slides提供了 SlideSize 类,以便您可以指定幻灯片的首选设置。以下Java代码演示了如何使用 getType() 属性(来自 SlideSize 类)为演示文稿中的幻灯片设置特定的纸张大小:

// 实例化一个表示演示文稿文件的Presentation对象 
Presentation presentation = new Presentation();
try {
    // 设置SlideSize.Type属性  
    presentation.getSlideSize().setSize(SlideSizeType.A4Paper,SlideSizeScaleType.EnsureFit);
    
    // 为PDF选项设置不同的属性
    PdfOptions opts = new  PdfOptions();
    opts.setSufficientResolution(600);
    
    // 将演示文稿保存到磁盘
    presentation.save("SetPDFPageSize_out.pdf", SaveFormat.Pdf, opts);
} finally {
    presentation.dispose();
}