合并演示文稿

演示文稿合并

当您将一个演示文稿合并到另一个演示文稿时,实际上是在单个演示文稿中组合它们的幻灯片,以获得一个文件。

可以合并的内容

使用 Aspose.Slides,您可以合并

  • 整个演示文稿。所有来自演示文稿的幻灯片最终会合并到一个演示文稿中。
  • 特定幻灯片。选定的幻灯片最终会合并到一个演示文稿中。
  • 同一种格式(PPT 转 PPT,PPTX 转 PPTX 等)和不同格式(PPT 转 PPTX,PPTX 转 ODP 等)。

合并选项

您可以应用选项以决定是否

  • 输出演示文稿中的每个幻灯片保留独特的样式。
  • 输出演示文稿中的所有幻灯片使用特定样式。

为了合并演示文稿,Aspose.Slides 提供了 AddClone 方法(来自 ISlideCollection 接口)。有多种实现的 AddClone 方法定义了演示文稿合并过程的参数。每个演示文稿对象都有一个 Slides 集合,因此您可以从希望合并幻灯片的演示文稿中调用 AddClone 方法。

AddClone 方法返回一个 ISlide 对象,它是源幻灯片的克隆。输出演示文稿中的幻灯片只是源幻灯片的副本。因此,您可以在不担心源演示文稿受到影响的情况下,对结果幻灯片进行更改(例如,应用样式或格式选项或布局)。

合并演示文稿

Aspose.Slides 提供了 AddClone(ISlide) 方法,允许您合并幻灯片,同时保持幻灯片的布局和样式(默认参数)。

以下 PHP 代码展示了如何合并演示文稿:

  $pres1 = new Presentation("pres1.pptx");
  try {
    $pres2 = new Presentation("pres2.pptx");
    try {
      foreach($pres2->getSlides() as $slide) {
        $pres1->getSlides()->addClone($slide);
      }
    } finally {
      if (!java_is_null($pres2)) {
        $pres2->dispose();
      }
    }
    $pres1->save("combined.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres1)) {
      $pres1->dispose();
    }
  }

与幻灯片母版合并演示文稿

Aspose.Slides 提供了 AddClone(ISlide, IMasterSlide, boolean) 方法,允许您合并幻灯片,同时应用幻灯片母版演示文稿模板。如果需要,您可以对输出演示文稿中的幻灯片样式进行更改。

以下代码演示了上述操作:

  $pres1 = new Presentation("pres1.pptx");
  try {
    $pres2 = new Presentation("pres2.pptx");
    try {
      foreach($pres2->getSlides() as $slide) {
        $pres1->getSlides()->addClone($slide, $pres2->getMasters()->get_Item(0), true);
      }
    } finally {
      if (!java_is_null($pres2)) {
        $pres2->dispose();
      }
    }
    $pres1->save("combined.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres1)) {
      $pres1->dispose();
    }
  }

如果您希望输出演示文稿中的幻灯片具有不同的幻灯片布局,在合并时请使用 AddClone(ISlide, ILayoutSlide) 方法。

从演示文稿中合并特定幻灯片

以下 PHP 代码展示了如何选择和组合来自不同演示文稿的特定幻灯片,以获取一个输出演示文稿:

  $pres1 = new Presentation("pres1.pptx");
  try {
    $pres2 = new Presentation("pres2.pptx");
    try {
      foreach($pres2->getSlides() as $slide) {
        $pres1->getSlides()->addClone($slide, $pres2->getLayoutSlides()->get_Item(0));
      }
    } finally {
      if (!java_is_null($pres2)) {
        $pres2->dispose();
      }
    }
    $pres1->save("combined.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres1)) {
      $pres1->dispose();
    }
  }

使用幻灯片布局合并演示文稿

以下 PHP 代码展示了如何合并演示文稿中的幻灯片,同时应用您偏好的幻灯片布局,以获取一个输出演示文稿:

  $pres1 = new Presentation("pres1.pptx");
  try {
    $pres2 = new Presentation("pres2.pptx");
    try {
      foreach($pres2->getSlides() as $slide) {
        $pres1->getSlides()->addClone($slide, $pres2->getLayoutSlides()->get_Item(0));
      }
    } finally {
      if (!java_is_null($pres2)) {
        $pres2->dispose();
      }
    }
    $pres1->save("combined.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres1)) {
      $pres1->dispose();
    }
  }

合并具有不同幻灯片大小的演示文稿

要合并两份具有不同幻灯片大小的演示文稿,您必须调整其中一份演示文稿的大小,以使其与另一份演示文稿的大小匹配。

以下示例代码演示了上述操作:

  $pres1 = new Presentation("pres1.pptx");
  try {
    $pres2 = new Presentation("pres2.pptx");
    try {
      $pres2->getSlideSize()->setSize($pres1->getSlideSize()->getSize()->getWidth(), $pres1->getSlideSize()->getSize()->getHeight(), SlideSizeScaleType::EnsureFit);
      foreach($pres2->getSlides() as $slide) {
        $pres1->getSlides()->addClone($slide);
      }
    } finally {
      if (!java_is_null($pres2)) {
        $pres2->dispose();
      }
    }
    $pres1->save("combined.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres1)) {
      $pres1->dispose();
    }
  }

将幻灯片合并到演示文稿部分

以下 PHP 代码展示了如何将特定幻灯片合并到演示文稿中的某一部分:

  $pres1 = new Presentation("pres1.pptx");
  try {
    $pres2 = new Presentation("pres2.pptx");
    try {
      foreach($pres2->getSlides() as $slide) {
        $pres1->getSlides()->addClone($slide, $pres1->getSections()->get_Item(0));
      }
    } finally {
      if (!java_is_null($pres2)) {
        $pres2->dispose();
      }
    }
    $pres1->save("combined.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres1)) {
      $pres1->dispose();
    }
  }

幻灯片将被添加到该部分的末尾。