C# でスライドレイアウトを適用または変更する

概要

スライドレイアウトは、プレースホルダーボックスの配置とスライド上のコンテンツの書式設定を定義します。利用できるプレースホルダーとその表示位置を制御します。スライドレイアウトを使用すると、シンプルなものから複雑なものまで、プレゼンテーションを迅速かつ一貫してデザインできます。PowerPoint の最も一般的なスライドレイアウトは次のとおりです。

タイトル スライド レイアウト – タイトル用とサブタイトル用の 2 つのテキストプレースホルダーが含まれます。

タイトルとコンテンツ レイアウト – 上部に小さなタイトルプレースホルダー、下部にテキスト、箇条書き、チャート、画像などのメインコンテンツ用の大きなプレースホルダーがあります。

空白 レイアウト – プレースホルダーがなく、スライドをゼロからデザインできます。

スライドレイアウトはスライドマスターの一部であり、プレゼンテーション全体のレイアウトスタイルを定義する最上位スライドです。スライドマスター経由でレイアウトスライドにアクセスし、タイプ、名前、または固有 ID で取得・変更できます。また、プレゼンテーション内で特定のレイアウトスライドを直接編集することも可能です。

Aspose.Slides for .NET でスライドレイアウトを操作するには、次を使用します。

プレゼンテーションへのスライドレイアウトの追加

スライドの外観や構造をカスタマイズするために、プレゼンテーションに新しいレイアウトスライドを追加する必要があります。Aspose.Slides for .NET では、特定のレイアウトが既に存在するかどうかを確認し、必要に応じて新規作成し、そのレイアウトに基づいてスライドを挿入できます。

  1. Presentation クラスのインスタンスを作成します。
  2. IMasterLayoutSlideCollection にアクセスします。
  3. コレクション内に目的のレイアウトスライドが既に存在するか確認します。存在しない場合は必要なレイアウトスライドを追加します。
  4. 新しいレイアウトスライドを基に空のスライドを追加します。
  5. プレゼンテーションを保存します。

以下の C# コードは、PowerPoint プレゼンテーションにスライドレイアウトを追加する方法を示しています。

// PowerPoint ファイルを表す Presentation クラスのインスタンスを作成します。
using (Presentation presentation = new Presentation("Sample.pptx"))
{
    // レイアウトスライドのタイプを順に調べて、レイアウトスライドを選択します。
    IMasterLayoutSlideCollection layoutSlides = presentation.Masters[0].LayoutSlides;
    ILayoutSlide layoutSlide = layoutSlides.GetByType(SlideLayoutType.TitleAndObject) ?? layoutSlides.GetByType(SlideLayoutType.Title);

    if (layoutSlide == null)
    {
        //     プレゼンテーションにすべてのレイアウトタイプが含まれていない状況です。
        //     プレゼンテーションファイルには Blank と Custom のレイアウトタイプのみが含まれています。
        //     ただし、カスタムタイプのレイアウトスライドは認識可能な名前を持つ場合があります、
        //     例えば "Title"、"Title and Content" などで、レイアウトスライドの選択に使用できます。
        //     プレースホルダーシェイプのタイプ集合に依存することもできます。
        //     例として、Title スライドは Title プレースホルダータイプだけを持つべきです。
        foreach (ILayoutSlide titleAndObjectLayoutSlide in layoutSlides)
        {
            if (titleAndObjectLayoutSlide.Name == "Title and Object")
            {
                layoutSlide = titleAndObjectLayoutSlide;
                break;
            }
        }

        if (layoutSlide == null)
        {
            foreach (ILayoutSlide titleLayoutSlide in layoutSlides)
            {
                if (titleLayoutSlide.Name == "Title")
                {
                    layoutSlide = titleLayoutSlide;
                    break;
                }
            }

            if (layoutSlide == null)
            {
                layoutSlide = layoutSlides.GetByType(SlideLayoutType.Blank);
                if (layoutSlide == null)
                {
                    layoutSlide = layoutSlides.Add(SlideLayoutType.TitleAndObject, "Title and Object");
                }
            }
        }
    }

    // 追加したレイアウトスライドを使用して空のスライドを追加します。
    presentation.Slides.InsertEmptySlide(0, layoutSlide);

    // プレゼンテーションをディスクに保存します。  
    presentation.Save("Output.pptx", SaveFormat.Pptx);
}

未使用レイアウトスライドの削除

Aspose.Slides は、Compress クラスの RemoveUnusedLayoutSlides メソッドを提供し、不要または未使用のレイアウトスライドを削除できます。

以下の C# コードは、PowerPoint プレゼンテーションからレイアウトスライドを削除する方法を示しています。

using (Presentation presentation = new Presentation("Presentation.pptx"))
{
    Aspose.Slides.LowCode.Compress.RemoveUnusedLayoutSlides(presentation);
    
    presentation.Save("Output.pptx", SaveFormat.Pptx);
}

スライドレイアウトへのプレースホルダーの追加

Aspose.Slides は、ILayoutSlide.PlaceholderManager プロパティを提供し、レイアウトスライドに新しいプレースホルダーを追加できます。

このマネージャーは、以下のプレースホルダータイプに対応したメソッドを含みます。

PowerPoint プレースホルダー ILayoutPlaceholderManager メソッド
Content AddContentPlaceholder(float x, float y, float width, float height)
Content (Vertical) AddVerticalContentPlaceholder(float x, float y, float width, float height)
Text AddTextPlaceholder(float x, float y, float width, float height)
Text (Vertical) AddVerticalTextPlaceholder(float x, float y, float width, float height)
Picture AddPicturePlaceholder(float x, float y, float width, float height)
Chart AddChartPlaceholder(float x, float y, float width, float height)
Table AddTablePlaceholder(float x, float y, float width, float height)
SmartArt AddSmartArtPlaceholder(float x, float y, float width, float height)
Media AddMediaPlaceholder(float x, float y, float width, float height)
Online Image AddOnlineImagePlaceholder(float x, float y, float width, float height)

以下の C# コードは、空白レイアウトスライドに新しいプレースホルダー シェイプを追加する方法を示しています。

using (var presentation = new Presentation())
{
    // Blank レイアウトスライドを取得します。
    ILayoutSlide layout = presentation.LayoutSlides.GetByType(SlideLayoutType.Blank);

    // レイアウトスライドのプレースホルダーマネージャーを取得します。
    ILayoutPlaceholderManager placeholderManager = layout.PlaceholderManager;

    // Blank レイアウトスライドにさまざまなプレースホルダーを追加します。
    placeholderManager.AddContentPlaceholder(20, 20, 310, 270);
    placeholderManager.AddVerticalTextPlaceholder(350, 20, 350, 270);
    placeholderManager.AddChartPlaceholder(20, 310, 310, 180);
    placeholderManager.AddTablePlaceholder(350, 310, 350, 180);

    // Blank レイアウトを使用して新しいスライドを追加します。
    ISlide newSlide = presentation.Slides.AddEmptySlide(layout);

    presentation.Save("Placeholders.pptx", SaveFormat.Pptx);
}

結果:

The placeholders on the layout slide

レイアウトスライドのフッター表示設定

PowerPoint プレゼンテーションでは、フッター要素(日付、スライド番号、カスタムテキスト)をレイアウトに応じて表示・非表示にできます。Aspose.Slides for .NET は、これらフッタープレースホルダーの表示状態を制御でき、特定のレイアウトだけフッター情報を表示し、他のレイアウトはシンプルに保つことが可能です。

  1. Presentation クラスのインスタンスを作成します。
  2. インデックスでレイアウトスライドの参照を取得します。
  3. スライドフッター プレースホルダーを表示に設定します。
  4. スライド番号 プレースホルダーを表示に設定します。
  5. 日付/時刻 プレースホルダーを表示に設定します。
  6. プレゼンテーションを保存します。

以下の C# コードは、スライドフッターの表示状態を設定する方法を示しています。

using (Presentation presentation = new Presentation("Presentation.ppt"))
{
    ILayoutSlideHeaderFooterManager headerFooterManager = presentation.LayoutSlides[0].HeaderFooterManager;

    if (!headerFooterManager.IsFooterVisible)
    {
        headerFooterManager.SetFooterVisibility(true);
    }

    if (!headerFooterManager.IsSlideNumberVisible)
    {
        headerFooterManager.SetSlideNumberVisibility(true);
    }

    if (!headerFooterManager.IsDateTimeVisible)
    {
        headerFooterManager.SetDateTimeVisibility(true);
    }

    headerFooterManager.SetFooterText("Footer text");
    headerFooterManager.SetDateTimeText("Date and time text");

    presentation.Save("Presentation.ppt", SaveFormat.Ppt);
}

スライドの子フッター表示設定

PowerPoint プレゼンテーションでは、日付、スライド番号、カスタムテキストといったフッター要素をマスタースライドレベルで制御し、すべてのレイアウトスライドに一貫したフッター情報を提供できます。Aspose.Slides for .NET は、マスタースライド上でこれらフッタープレースホルダーの表示と内容を設定し、子レイアウトスライドへ自動的に反映させることができます。

  1. Presentation クラスのインスタンスを作成します。
  2. インデックスでマスタースライドの参照を取得します。
  3. マスターとすべての子フッタープレースホルダーを表示に設定します。
  4. マスターとすべての子スライド番号プレースホルダーを表示に設定します。
  5. マスターとすべての子日付/時刻プレースホルダーを表示に設定します。
  6. プレゼンテーションを保存します。

以下の C# コードは、この操作を示しています。

using (Presentation presentation = new Presentation("Presentation.ppt"))
{
    IMasterSlideHeaderFooterManager headerFooterManager = presentation.Masters[0].HeaderFooterManager;

    headerFooterManager.SetFooterAndChildFootersVisibility(true);
    headerFooterManager.SetSlideNumberAndChildSlideNumbersVisibility(true);
    headerFooterManager.SetDateTimeAndChildDateTimesVisibility(true);

    headerFooterManager.SetFooterAndChildFootersText("Footer text");
    headerFooterManager.SetDateTimeAndChildDateTimesText("Date and time text");

    presentation.Save("Output.pptx", SaveFormat.Pptx);
}

FAQ

マスタースライドとレイアウトスライドの違いは何ですか?

マスタースライドは全体的なテーマと既定の書式設定を定義し、レイアウトスライドはコンテンツの種類ごとにプレースホルダーの具体的な配置を定義します。

レイアウトスライドを別のプレゼンテーションにコピーできますか?

はい。1 つのプレゼンテーションの LayoutSlides コレクションからレイアウトスライドをクローンし、AddClone メソッドを使って別のプレゼンテーションに挿入できます。

使用中のスライドが参照しているレイアウトスライドを削除しようとするとどうなりますか?

プレゼンテーション内で少なくとも 1 枚のスライドが参照しているレイアウトスライドを削除しようとすると、Aspose.Slides は PptxEditException をスローします。未使用のレイアウトスライドだけを安全に削除するには、RemoveUnusedLayoutSlides を使用してください。