C++でプレゼンテーションのスライドマスターを管理

PowerPoint のスライドマスターとは

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

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

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

以下は基本的なスライドマスター操作です:

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

以下はスライドマスターに関する高度な操作です:

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

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

スライドマスターを使用する前に、プレゼンテーションでどのように使用され、スライドに適用されるかを理解したいでしょう。

  • すべてのプレゼンテーションはデフォルトで少なくとも 1 つのスライドマスターを持ちます。
  • プレゼンテーションには複数のスライドマスターを含めることができます。複数のスライドマスターを追加し、プレゼンテーションの異なる部分をさまざまな方法でスタイル設定できます。

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

Aspose.Slides の Presentation オブジェクトは、get_Masters() リストを保持しており、これは IMasterSlideCollection 型で、プレゼンテーションで定義されたすべてのマスタースライドのリストを含みます。

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

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

Note: プレゼンテーションのスライドは 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 を使用すると、以下の方法でスライドマスターにアクセスできます: ```c++ System::SharedPtr master = pres->get_Masters()->idx_get(0);



[IMasterSlide](https://reference.aspose.com/slides/cpp/class/aspose.slides.i_master_slide) インターフェイスはスライドマスターを表します。[get_Masters()](https://reference.aspose.com/slides/cpp/class/aspose.slides.presentation#a8fda502eacdf2fe4ccfc1ab0bf185d29) プロパティ([IMasterSlideCollection](https://reference.aspose.com/slides/cpp/class/aspose.slides.i_master_slide_collection) 型に関連)は、プレゼンテーションで定義されたすべてのスライドマスターのリストを含みます。  

## **スライドマスターへの画像の追加**

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

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

![todo:image_alt_text](slide-master_4.png)

Aspose.Slides を使用してスライドマスターに画像を追加できます: ```c++
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);

スライドマスターへのプレースホルダーの追加

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

  • マスタータイトルスタイルを編集するにはクリック
  • マスターテキストスタイルを編集
  • 第2レベル
  • 第3レベル

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

PowerPoint では、スライドマスター → プレースホルダーの挿入 パスを使用してプレースホルダーを追加できます。

todo:image_alt_text

次に、Aspose.Slides を使用したプレースホルダーのより複雑な例を見てみましょう。スライドマスターからテンプレート化されたプレースホルダーを含むスライドです。

todo:image_alt_text

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

todo:image_alt_text

まず、スライドマスターオブジェクトからタイトルプレースホルダーの内容を取得し、次に PlaceHolder.FillFormat フィールドを使用します: ```c++ System::SharedPtr FindPlaceholder(System::SharedPtr master, PlaceholderType type) { for (auto& shape : master->get_Shapes()) { System::SharedPtr autoShape = System::AsCastAspose::Slides::IAutoShape(shape); if (autoShape != nullptr) { if (autoShape->get_Placeholder()->get_Type() == type) { return autoShape; } } } return nullptr; }

void Main() { auto pres = System::MakeObject(); System::SharedPtr master = pres->get_Masters()->idx_get(0); System::SharedPtr 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);

}



タイトルのスタイルと書式は、スライドマスターに基づくすべてのスライドで変更されます。 






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

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

```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 つのマスタースライドは、図形、スタイル、テキスト、アニメーション、その他の設定などがすべて同じであれば等しいとみなされます。比較では、スライド ID などの一意識別子や、日付プレースホルダーの現在の日付などの動的コンテンツは考慮されません。

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

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

このコードは、C++ でスライドマスターをプレゼンテーションのデフォルトビューに設定する方法を示しています: ```c++ pres->get_ViewProperties()->set_LastView(Aspose::Slides::ViewType::SlideMasterView);



## **未使用のマスタースライドの削除**

Aspose.Slides は、[RemoveUnusedMasterSlides()](https://reference.aspose.com/slides/cpp/aspose.slides.lowcode/compress/removeunusedmasterslides/) メソッド([Compress](https://reference.aspose.com/slides/cpp/aspose.slides.lowcode/compress/) クラス)を提供し、不要で未使用のマスタースライドを削除できます。この C++ コードは、PowerPoint プレゼンテーションからマスタースライドを削除する方法を示しています: 

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

LowCode::Compress::RemoveUnusedMasterSlides(pres);

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

FAQ

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

スライドマスターは、プレゼンテーションのスライドのレイアウト、スタイル、テーマ、フォント、背景、その他のプロパティを定義するスライドテンプレートです。すべてのプレゼンテーションスライドの外観を一度に設定および変更できます。

プレゼンテーションでスライドマスターはどのように適用されますか?

すべてのプレゼンテーションはデフォルトで少なくとも 1 つのスライドマスターを持ちます。新しいスライドが追加されると、スライドマスターが自動的に適用され、通常は前のスライドのマスターが継承されます。プレゼンテーションは複数のスライドマスターを含めて、異なる部分を個別にスタイル設定できます。

スライドマスターでカスタマイズできる要素は何ですか?

スライドマスターは、以下の主要プロパティをカスタマイズできます:

  • Background: スライドの背景を設定します。
  • BodyStyle: スライド本文のテキストスタイルを定義します。
  • Shapes: プレースホルダーや画像フレームなど、スライドマスター上のすべての図形を管理します。
  • Controls: ActiveX コントロールを処理します。
  • ThemeManager: テーママネージャーにアクセスします。
  • HeaderFooterManager: ヘッダーとフッターを管理します。

スライドマスターに画像を追加するにはどうすればよいですか?

スライドマスターに画像を追加すると、その画像はそのマスターに依存するすべてのスライドに表示されます。例えば、会社のロゴをスライドマスターに配置すると、プレゼンテーション内のすべてのスライドにロゴが表示されます。

スライドマスターはスライドレイアウトとどのように関係していますか?

スライドレイアウトはスライドマスターと連携してスライドデザインの柔軟性を提供します。スライドマスターは全体的なスタイルとテーマを定義し、スライドレイアウトはコンテンツ配置のバリエーションを可能にします。階層は次の通りです:

  • Slide Master → 全体的なスタイルを定義。
  • Slide Layout → 異なるコンテンツ配置を提供。
  • Slide → そのスライドレイアウトからデザインを継承。

単一のプレゼンテーションに複数のスライドマスターを持つことはできますか?

はい、プレゼンテーションには複数のスライドマスターを含めることができます。これにより、プレゼンテーションの異なるセクションをさまざまな方法でスタイル設定でき、デザインの柔軟性が向上します。

Aspose.Slides を使用してスライドマスターにアクセスし、変更するにはどうすればよいですか?

Aspose.Slides では、スライドマスターは IMasterSlide インターフェイスで表されます。プレゼンテーションオブジェクトの get_Masters メソッドを使用してスライドマスターにアクセスできます。