プレゼンテーションのマージ - 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);

異なるスライドサイズを持つプレゼンテーションのマージ

異なるスライドサイズのプレゼンテーションを2つマージするには、いずれかのプレゼンテーションのサイズを変更して、もう一方のプレゼンテーションのサイズと一致させる必要があります。

このサンプルコードは、説明した操作を示しています:

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);

スライドはセクションの最後に追加されます。