合并演示文稿 - C++ PowerPoint API

演示文稿合并

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

可以合并的内容

使用 Aspose.Slides,您可以合并

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

合并选项

您可以应用决定是否

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

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

AddClone 方法返回一个 ISlide 对象,这是源幻灯片的克隆。输出演示文稿中的幻灯片只是源幻灯片的副本。因此,您可以更改生成的幻灯片(例如,应用样式或格式选项或布局),而无需担心源演示文稿受到影响。

合并演示文稿

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

以下 C++ 代码演示了如何合并演示文稿:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide);
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

合并带有幻灯片母版的演示文稿

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

这段 C++ 代码演示了所描述的操作:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide, pres2->get_Masters()->idx_get(0), true);
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

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

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

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

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide, pres2->get_LayoutSlides()->idx_get(0));
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

合并带有幻灯片布局的演示文稿

以下 C++ 代码展示了如何在将您首选的幻灯片布局应用于演示文稿的同时组合演示文稿中的幻灯片以获取一个输出演示文稿:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide, pres2->get_LayoutSlides()->idx_get(0));
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

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

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

以下示例代码演示了所描述的操作:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres1Size = pres1->get_SlideSize()->get_Size();

auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
pres2->get_SlideSize()->SetSize(pres1Size.get_Width(), pres1Size.get_Height(), SlideSizeScaleType::EnsureFit);

for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide);
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

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

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

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (int32_t index = 0; index < pres2->get_Slides()->get_Count(); index++)
{
    auto slide = pres2->get_Slides()->idx_get(index);
    pres1->get_Slides()->AddClone(slide, pres1->get_Sections()->idx_get(0));
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

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