C# を使用して PowerPoint プレゼンテーション (PPT, PPTX) を効率的にマージ

プレゼンテーション統合の最適化

Aspose.Slides for .NET を使用して、スタイル、レイアウト、すべての要素を保持しながら PowerPoint プレゼンテーションをシームレスに結合できます。他のツールとは異なり、Aspose.Slides は品質を損なったりデータを失ったりすることなくプレゼンテーションを統合します。プレゼンテーション全体、特定のスライド、さらには異なるファイル形式(PPT から PPTX など)もマージできます。

マージ機能

  • フルプレゼンテーションマージ:すべてのスライドを単一ファイルにまとめます。
  • 特定スライドマージ:選択したスライドを選んで結合します。
  • クロスフォーマットマージ:異なる形式のプレゼンテーションを統合し、整合性を維持します。

プレゼンテーションのマージ

プレゼンテーションを別のプレゼンテーションにマージすると、スライドを単一のプレゼンテーションに結合して 1 つのファイルにします。

マージできるもの

Aspose.Slides を使用すると、次のものをマージできます

  • プレゼンテーション全体。すべてのスライドが 1 つのプレゼンテーションにまとめられます
  • 特定のスライド。選択したスライドが 1 つのプレゼンテーションにまとめられます
  • 同一形式のプレゼンテーション(PPT → PPT、PPTX → PPTX 等)および異なる形式(PPT → PPTX、PPTX → ODP 等)間で相互にマージできます。

マージオプション

以下を決定するオプションを適用できます。

  • 出力プレゼンテーションの各スライドが固有のスタイルを保持するか
  • 出力プレゼンテーションのすべてのスライドに特定のスタイルを使用するか

プレゼンテーションをマージするには、Aspose.Slides は AddClone メソッド(ISlideCollection インターフェイス)を提供します。 AddClone メソッドには、マージプロセスのパラメータを定義する複数の実装があります。すべての Presentation オブジェクトは Slides コレクションを持っているので、スライドをマージしたいプレゼンテーションから AddClone メソッドを呼び出すことができます。

AddClone メソッドは ISlide オブジェクトを返します。これはソーススライドのクローンです。出力プレゼンテーションのスライドは、単にソースのスライドのコピーです。したがって、元のプレゼンテーションに影響を与えることなく、結果として得られるスライドに変更(例: スタイルや書式オプション、レイアウトの適用)を加えることができます。

プレゼンテーションのマージ

Aspose.Slides は、スライドのレイアウトとスタイルを保持したままスライドを結合できる AddClone (ISlide) メソッドを提供します(デフォルトパラメータ)。

以下の C# コードは、プレゼンテーションをマージする方法を示しています:

using (Presentation pres1 = new Presentation("pres1.pptx"),
    pres2 = new Presentation("pres2.pptx"))
{
    foreach (ISlide slide in pres2.Slides)
    {
        pres1.Slides.AddClone(slide);
    }

    pres1.Save("combined.pptx", SaveFormat.Pptx);
}

スライドマスター付きプレゼンテーションのマージ

Aspose.Slides は、スライドマスターテンプレートを適用しながらスライドを結合できる AddClone (ISlide, IMasterSlide, Boolean) メソッドを提供します。必要に応じて、出力プレゼンテーションのスライドのスタイルを変更できます。

この C# コードは上記の操作を示しています:

using (Presentation pres1 = new Presentation("pres1.pptx"),
    pres2 = new Presentation("pres2.pptx"))
{
    foreach (ISlide slide in pres2.Slides)
    {
        pres1.Slides.AddClone(slide, pres2.Masters[0], allowCloneMissingLayout: true);
    }

    pres1.Save("combined.pptx", SaveFormat.Pptx);
}

出力プレゼンテーションのスライドに別のレイアウトを適用したい場合は、マージ時に AddClone (ISlide, ILayoutSlide) メソッドを使用してください。

プレゼンテーションから特定スライドをマージ

複数のプレゼンテーションから特定のスライドをマージすることは、カスタムスライドデッキを作成するのに便利です。Aspose.Slides for .NET を使用すると、必要なスライドだけを選択してインポートできます。API は元のスライドの書式、レイアウト、デザインを保持します。

以下の C# コードは新しいプレゼンテーションを作成し、他の 2 つのプレゼンテーションからタイトルスライドを追加し、結果をファイルに保存します:

using (Presentation presentation = new Presentation())
using (Presentation presentation1 = new Presentation("presentation1.pptx"))
using (Presentation presentation2 = new Presentation("presentation2.pptx"))
{
    presentation.Slides.RemoveAt(0);

    ISlide slide1 = GetTitleSlide(presentation1);

    if (slide1 != null)
        presentation.Slides.AddClone(slide1);

    ISlide slide2 = GetTitleSlide(presentation2);

    if (slide2 != null)
        presentation.Slides.AddClone(slide2);

    presentation.Save("combined.pptx", SaveFormat.Pptx);
}
static ISlide GetTitleSlide(IPresentation presentation)
{
    foreach (ISlide slide in presentation.Slides)
    {
        if (slide.LayoutSlide.LayoutType == SlideLayoutType.Title)
        {
            return slide;
        }
    }
    return null;
}

スライドレイアウト付きプレゼンテーションのマージ

この C# コードは、好みのスライドレイアウトを適用しながらプレゼンテーションからスライドを結合し、1 つの出力プレゼンテーションを作成する方法を示しています:

using (Presentation pres1 = new Presentation("pres1.pptx"),
    pres2 = new Presentation("pres2.pptx"))
{
    foreach (ISlide slide in pres2.Slides)
    {
        pres1.Slides.AddClone(slide, pres2.LayoutSlides[0]);
    }

    pres1.Save("combined.pptx", SaveFormat.Pptx);
}

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

異なるスライドサイズのプレゼンテーションを 2 つマージするには、どちらかのプレゼンテーションのサイズを調整して、もう一方のサイズに合わせる必要があります。

このサンプルコードは上記の操作を示しています:

using (Presentation pres1 = new Presentation("pres1.pptx"),
   pres2 = new Presentation("pres2.pptx"))
{
   pres2.SlideSize.SetSize(pres1.SlideSize.Size.Width, pres1.SlideSize.Size.Height, SlideSizeScaleType.EnsureFit);
 
   foreach (ISlide slide in pres2.Slides)
   {
       pres1.Slides.AddClone(slide);
   }
 
   pres1.Save("combined.pptx", SaveFormat.Pptx);
}

スライドをプレゼンテーションのセクションにマージ

この C# コードは、特定のスライドをプレゼンテーションのセクションにマージする方法を示しています:

using (Presentation pres1 = new Presentation("pres1.pptx"),
    pres2 = new Presentation("pres2.pptx"))
{
    for (var index = 0; index < pres2.Slides.Count; index++)
    {
        ISlide slide = pres2.Slides[index];
        pres1.Slides.AddClone(slide, pres1.Sections[0]);
    }

    pres1.Save("combined.pptx", SaveFormat.Pptx);
}

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

よくある質問

マージ時にスピーカーノートは保持されますか?

はい。スライドをクローンする際、Aspose.Slides はノート、書式設定、アニメーションなどすべてのスライド要素を引き継ぎます。

コメントとその作成者は転送されますか?

コメントはスライドコンテンツの一部としてスライドにコピーされます。コメント作者ラベルは、結果のプレゼンテーションのコメントオブジェクトとして保持されます。

元のプレゼンテーションがパスワードで保護されている場合はどうなりますか?

パスワードで開く必要があります。LoadOptions.Password を使用して開き、ロード後にそれらのスライドを保護されていないターゲットファイル(または保護されたファイル)に安全にクローンできます。

マージ操作はどの程度スレッドセーフですか?

同じ Presentation インスタンスを複数スレッドから使用しないでください。推奨ルールは「1 ドキュメント ― 1 スレッド」です。別々のファイルは別スレッドで並行処理できます。