スライドマスター

PowerPointのスライドマスターとは何ですか

スライドマスターとは、プレゼンテーション内のスライドのレイアウト、スタイル、テーマ、フォント、背景、およびその他のプロパティを定義するスライドテンプレートです。同じスタイルとテンプレートで会社のプレゼンテーション(または一連のプレゼンテーション)を作成したい場合、スライドマスターを使用できます。

スライドマスターは、すべてのプレゼンテーションスライドの外観を一度に設定および変更できるため、便利です。Aspose.Slidesは、PowerPointのスライドマスター機構をサポートしています。

VBAもスライドマスターを操作し、背景の変更、形状の追加、レイアウトのカスタマイズなど、PowerPointでサポートされている同じ操作を実行することを許可します。Aspose.Slidesは、スライドマスターを使用し、それらを使用して基本的なタスクを実行するための柔軟なメカニズムを提供します。

基本的なスライドマスター操作は次のとおりです:

  • スライドマスターを作成または追加します。
  • プレゼンテーションスライドにスライドマスターを適用します。
  • スライドマスターの背景を変更します。
  • スライドマスターに画像、プレースホルダー、スマートアートなどを追加します。

スライドマスターに関するより高度な操作は次のとおりです:

  • スライドマスターを比較します。
  • スライドマスターをマージします。
  • 複数のスライドマスターを適用します。
  • スライドマスター付きのスライドを別のプレゼンテーションにコピーします。
  • プレゼンテーション内の重複したスライドマスターを見つけます。
  • スライドマスターをプレゼンテーションのデフォルトビューとして設定します。

スライドマスターはどのように適用されますか

スライドマスターを使用する前に、プレゼンテーション内での使用方法やスライドへの適用方法を理解しておくと良いでしょう。

  • プレゼンテーションには、デフォルトで少なくとも1つのスライドマスターがあります。
  • プレゼンテーションには、複数のスライドマスターを含むことができます。複数のスライドマスターを追加し、プレゼンテーションの異なる部分を異なる方法でスタイリングするために使用できます。

Aspose.Slidesでは、スライドマスターはIMasterSlide型で表されます。

Aspose.SlidesのPresentationオブジェクトには、プレゼンテーション内に定義されたすべてのマスタースライドのリストを含むget_Masters()IMasterSlideCollection型があります。

CRUD操作に加えて、IMasterSlideCollectionインターフェースには、AddClone()およびInsertClone()などの便利なメソッドが含まれています。これらのメソッドは、基本的なスライドのクローン機能から継承されています。しかし、スライドマスターを扱う場合、これらのメソッドを使用すると複雑な設定を実装できます。

新しいスライドがプレゼンテーションに追加されると、自動的にスライドマスターが適用されます。前のスライドのスライドマスターがデフォルトで選択されます。

注意: プレゼンテーションスライドはget_Slides()リストに格納されており、各新しいスライドはデフォルトでコレクションの最後に追加されます。プレゼンテーションに単一のスライドマスターが含まれている場合、そのスライドマスターがすべての新しいスライドに選択されます。これが、新しいスライドを作成するたびにスライドマスターを定義する必要がない理由です。

原則として、PowerPointとAspose.Slidesは同じです。たとえば、PowerPointでは、新しいプレゼンテーションを追加すると、最後のスライドの下の一番下の行を押すだけで、新しいスライド(最後のプレゼンテーションのスライドマスター付き)が作成されます。

todo:image_alt_text

Aspose.Slidesでは、PresentationクラスのAddClone()メソッドを使用して同等のタスクを実行できます。

スライドの階層におけるスライドマスター

スライドマスターを使用したスライドレイアウトは、最大限の柔軟性を提供します。スライドレイアウトでは、スライドマスターと同じスタイル(背景、フォント、形状など)を設定できます。ただし、スライドマスターに複数のスライドレイアウトを組み合わせると、新しいスタイルが作成されます。特定のスライドにスライドレイアウトを適用すると、スライドマスターによって適用されたスタイルから変更できます。

スライドマスターはすべての設定項目を上回ります:スライドマスター -> スライドレイアウト -> スライド:

todo:image_alt_text

IMasterSlideオブジェクトには、スライドレイアウトのリストを持つget_LayoutSlides()プロパティがあります。Slide型には、スライドに適用されたスライドレイアウトへのリンクを持つget_LayoutSlide()プロパティがあります。スライドとスライドマスター間の相互作用は、スライドレイアウトを介して行われます。

スライドマスターが含むもの

スライドマスターがどのように変更できるかを理解するためには、その構成要素を知っておく必要があります。これらはMasterSlideのコアプロパティです。

スライドマスターのメソッド:

  • GetDependingSlides - スライドマスターに依存するすべてのスライドを取得します。
  • ApplyExternalThemeToDependingSlides - 現在のスライドマスターと新しいテーマに基づいて新しいスライドマスターを作成することを許可します。新しいスライドマスターは、すべての依存スライドに適用されます。

スライドマスターを取得する

PowerPointでは、スライドマスターは表示 -> スライドマスターのメニューからアクセスできます:

todo:image_alt_text

Aspose.Slidesを使用すると、スライドマスターに次の方法でアクセスできます:

System::SharedPtr<IMasterSlide> master = pres->get_Masters()->idx_get(0);

IMasterSlideインターフェースはスライドマスターを表します。get_Masters()プロパティ(IMasterSlideCollection型に関連)は、プレゼンテーション内に定義されたすべてのスライドマスターのリストを含んでいます。

スライドマスターに画像を追加する

スライドマスターに画像を追加すると、その画像はそのスライドマスターに依存するすべてのスライドに表示されます。

たとえば、会社のロゴやいくつかの画像をスライドマスターに配置し、その後スライド編集モードに戻ることができます。すべてのスライドに画像が表示されるはずです。

todo:image_alt_text

Aspose.Slidesを使用してスライドマスターに画像を追加できます:

System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();

System::SharedPtr<IPPImage> image = pres->get_Images()->AddImage(System::IO::File::ReadAllBytes(u"image.png"));
pres->get_Master(0)->get_Shapes()->AddPictureFrame(ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 100.0f, image);

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

スライドマスターにプレースホルダーを追加する

これらのテキストフィールドは、スライドマスター上の標準的なプレースホルダーです:

  • マスタのタイトルスタイルを編集するにはクリックします

  • マスタのテキストスタイルを編集します

  • 第二レベル

  • 第三レベル

これらは、スライドマスターに基づくスライドにも表示されます。スライドマスターのプレースホルダーを編集すると、変更が自動的にスライドに適用されます。

PowerPointでは、スライドマスター -> プレースホルダーの挿入パスを通じてプレースホルダーを追加できます:

todo:image_alt_text

Aspose.Slidesを使用したプレースホルダーのより複雑な例を見てみましょう。スライドマスターからテンプレート化されたプレースホルダーのあるスライドを考えてみてください:

todo:image_alt_text

スライドマスター上でタイトルとサブタイトルの書式をこのように変更したいとします:

todo:image_alt_text

まず、スライドマスターオブジェクトからタイトルプレースホルダーの内容を取得し、その後PlaceHolder.FillFormatフィールドを使用します:

System::SharedPtr<IAutoShape> FindPlaceholder(System::SharedPtr<IMasterSlide> master, PlaceholderType type)
{
    for (auto& shape : master->get_Shapes())
    {
        System::SharedPtr<IAutoShape> autoShape = System::AsCast<Aspose::Slides::IAutoShape>(shape);
        if (autoShape != nullptr)
        {
            if (autoShape->get_Placeholder()->get_Type() == type)
            {
                return autoShape;
            }
        }
    }
    return nullptr;
}

void Main()
{
    auto pres = System::MakeObject<Presentation>();
    System::SharedPtr<IMasterSlide> master = pres->get_Masters()->idx_get(0);
    System::SharedPtr<IAutoShape> placeHolder = FindPlaceholder(master, Aspose::Slides::PlaceholderType::Title);
    auto fillFormat = placeHolder->get_FillFormat();
    fillFormat->set_FillType(Aspose::Slides::FillType::Gradient);
    auto gradientFormat = fillFormat->get_GradientFormat();
    gradientFormat->set_GradientShape(Aspose::Slides::GradientShape::Linear);
    gradientFormat->get_GradientStops()->Add(0.0f, System::Drawing::Color::FromArgb(255, 0, 0));
    gradientFormat->get_GradientStops()->Add(255.0f, System::Drawing::Color::FromArgb(128, 0, 128));
    
    pres->Save(u"pres.pptx", Aspose::Slides::Export::SaveFormat::Pptx);
}

タイトルスタイルと書式が、スライドマスターに基づくすべてのスライドに変更が適用されます:

todo:image_alt_text

スライドマスターの背景を変更する

マスタースライドの背景色を変更すると、プレゼンテーション内のすべての通常のスライドが新しい色になります。このC++コードはその操作を示しています:

auto pres = System::MakeObject<Presentation>();

auto master = pres->get_Masters()->idx_get(0);
auto background = master->get_Background();
background->set_Type(Aspose::Slides::BackgroundType::OwnBackground);
background->get_FillFormat()->set_FillType(Aspose::Slides::FillType::Solid);
background->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Green());
    
pres->Save(u"pres.pptx", Aspose::Slides::Export::SaveFormat::Pptx);

スライドマスターを別のプレゼンテーションにクローンする

スライドマスターを別のプレゼンテーションにクローンするには、宛先プレゼンテーションからAddClone()メソッドを呼び出し、スライドマスターを引数として渡します。このC++コードは、スライドマスターを別のプレゼンテーションにクローンする方法を示しています:

auto presSource = System::MakeObject<Presentation>();
auto presTarget = System::MakeObject<Presentation>();
    
auto master = presTarget->get_Masters()->AddClone(presSource->get_Masters()->idx_get(0));

プレゼンテーションに複数のスライドマスターを追加する

Aspose.Slidesでは、複数のスライドマスターやスライドレイアウトを任意のプレゼンテーションに追加することができます。これにより、さまざまな方法でプレゼンテーションスライドのスタイル、レイアウト、および書式設定オプションを設定できます。

PowerPointでは、「スライドマスターメニュー」から新しいスライドマスターやレイアウトを追加できます:

todo:image_alt_text

Aspose.Slidesを使用すると、AddClone()メソッドを呼び出して新しいスライドマスターを追加できます:

pres->get_Masters()->AddClone(pres->get_Masters()->idx_get(0));

スライドマスターを比較する

マスタースライドは、IBaseSlideインターフェースを実装しており、Equals()メソッドを含んでいます。このメソッドを使用してスライドを比較できます。同じ構造と静的コンテンツのマスタースライドに対してtrueを返します。

2つのマスタースライドは、それらの形状、スタイル、テキスト、アニメーションおよびその他の設定が等しい場合に等しいと見なされます。比較は、ユニークな識別子の値(例:SlideId)や動的コンテンツ(例:日付プレースホルダーの現在の日付値)を考慮しません。

スライドマスターをプレゼンテーションのデフォルトビューとして設定する

Aspose.Slidesでは、スライドマスターをプレゼンテーションのデフォルトビューとして設定できます。デフォルトビューは、プレゼンテーションを開いたときに最初に表示されるものです。

このコードは、C++でスライドマスターをプレゼンテーションのデフォルトビューとして設定する方法を示しています:

pres->get_ViewProperties()->set_LastView(Aspose::Slides::ViewType::SlideMasterView);

未使用のマスタースライドを削除する

Aspose.Slidesは、不要で未使用のマスタースライドを削除するためにRemoveUnusedMasterSlides()メソッド(Compressクラスから)を提供しています。このC++コードは、PowerPointプレゼンテーションからマスタースライドを削除する方法を示しています:

auto pres = System::MakeObject<Presentation>(u"pres.pptx");

LowCode::Compress::RemoveUnusedMasterSlides(pres);

pres->Save(u"pres-out.pptx", SaveFormat::Pptx);