在演示文稿中访问幻灯片

Aspose.Slides 允许您以两种方式访问幻灯片:通过索引和通过 ID。

通过索引访问幻灯片

演示文稿中的所有幻灯片根据幻灯片位置从 0 开始按数字顺序排列。第一张幻灯片可以通过索引 0 访问;第二张幻灯片通过索引 1 访问;依此类推。

表示演示文稿文件的 Presentation 类将所有幻灯片公开为 ISlideCollection 集合(ISlide 对象的集合)。下面的 PHP 代码展示了如何通过它的索引访问一张幻灯片:

  # 实例化表示演示文稿文件的 Presentation 对象
  $pres = new Presentation("demo.pptx");
  try {
    # 使用幻灯片索引访问幻灯片
    $slide = $pres->getSlides()->get_Item(0);
  } finally {
    $pres->dispose();
  }

通过 ID 访问幻灯片

演示文稿中的每一张幻灯片都有一个唯一的 ID。您可以使用 getSlideById 方法(由 Presentation 类公开)来定位该 ID。下面的 PHP 代码展示了如何提供有效的幻灯片 ID 并通过 getSlideById 方法访问该幻灯片:

  # 实例化表示演示文稿文件的 Presentation 对象
  $pres = new Presentation("demo.pptx");
  try {
    # 获取幻灯片 ID
    $id = $pres->getSlides()->get_Item(0)->getSlideId();
    # 通过 ID 访问幻灯片
    $slide = $pres->getSlideById($id);
  } finally {
    $pres->dispose();
  }

更改幻灯片位置

Aspose.Slides 允许您更改幻灯片的位置。例如,您可以指定第一张幻灯片应成为第二张幻灯片。

  1. 创建 Presentation 类的实例。
  2. 通过其索引获取幻灯片的引用(您要更改位置的幻灯片)
  3. 通过 setSlideNumber 属性为幻灯片设置新的位置。
  4. 保存修改后的演示文稿。

以下 PHP 代码演示了一个操作,其中位置为 1 的幻灯片被移动到位置 2:

  # 实例化表示演示文稿文件的 Presentation 对象
  $pres = new Presentation("Presentation.pptx");
  try {
    # 获取将要更改位置的幻灯片
    $sld = $pres->getSlides()->get_Item(0);
    # 为幻灯片设置新位置
    $sld->setSlideNumber(2);
    # 保存修改后的演示文稿
    $pres->save("helloworld_Pos.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }

第一张幻灯片变成了第二张;第二张幻灯片变成了第一张。当您更改一张幻灯片的位置时,其他幻灯片会自动调整。

设置幻灯片编号

使用 setFirstSlideNumber 属性(由 Presentation 类公开),您可以为演示文稿中的第一张幻灯片指定一个新编号。此操作将导致其他幻灯片的编号被重新计算。

  1. 创建 Presentation 类的实例。
  2. 获取幻灯片编号。
  3. 设置幻灯片编号。
  4. 保存修改后的演示文稿。

以下 PHP 代码演示了一个操作,其中第一张幻灯片的编号被设置为 10:

  # 实例化表示演示文稿文件的 Presentation 对象
  $pres = new Presentation("HelloWorld.pptx");
  try {
    # 获取幻灯片编号
    $firstSlideNumber = $pres->getFirstSlideNumber();
    # 设置幻灯片编号
    $pres->setFirstSlideNumber(10);
    # 保存修改后的演示文稿
    $pres->save("Set_Slide_Number_out.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }

如果您希望跳过第一张幻灯片,您可以从第二张幻灯片开始编号(并隐藏第一张幻灯片的编号):

  $presentation = new Presentation();
  try {
    $layoutSlide = $presentation->getLayoutSlides()->getByType(SlideLayoutType::Blank);
    $presentation->getSlides()->addEmptySlide($layoutSlide);
    $presentation->getSlides()->addEmptySlide($layoutSlide);
    $presentation->getSlides()->addEmptySlide($layoutSlide);
    # 设置第一张演示文稿幻灯片的编号
    $presentation->setFirstSlideNumber(0);
    # 显示所有幻灯片的幻灯片编号
    $presentation->getHeaderFooterManager()->setAllSlideNumbersVisibility(true);
    # 隐藏第一张幻灯片的幻灯片编号
    $presentation->getSlides()->get_Item(0)->getHeaderFooterManager()->setSlideNumberVisibility(false);
    # 保存修改后的演示文稿
    $presentation->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($presentation)) {
      $presentation->dispose();
    }
  }