PHPでプレゼンテーションのスライドマスターを管理する
PowerPoint のスライドマスターとは
Slide Master は、スライドのレイアウト、スタイル、テーマ、フォント、背景、およびその他のプロパティを定義するスライドテンプレートです。会社向けに同じスタイルとテンプレートのプレゼンテーション(または複数のプレゼンテーション)を作成したい場合は、スライドマスターを使用できます。
スライドマスターは、すべてのプレゼンテーションスライドの外観を一括で設定および変更できるため便利です。Aspose.Slides は PowerPoint のスライドマスター機構をサポートしています。
VBA でもスライドマスターを操作でき、PowerPoint と同様の操作 (背景の変更、図形の追加、レイアウトのカスタマイズなど) が実行可能です。Aspose.Slides はスライドマスターを使用するための柔軟なメカニズムを提供し、基本的なタスクを実行できます。
以下は基本的なスライドマスター操作です。
- スライドマスターの作成または取得。
- プレゼンテーションのスライドにスライドマスターを適用。
- スライドマスターの背景を変更。
- スライドマスターに画像、プレースホルダー、SmartArt などを追加。
以下はスライドマスターに関する高度な操作です。
- スライドマスターの比較。
- スライドマスターの統合。
- 複数のスライドマスターの適用。
- スライドマスター付きのスライドを別のプレゼンテーションにコピー。
- プレゼンテーション内の重複スライドマスターを検索。
- スライドマスターをプレゼンテーションのデフォルトビューに設定。
スライドマスターの適用方法
スライドマスターを操作する前に、プレゼンテーションでの使い方とスライドへの適用方法を理解しておくとよいでしょう。
- すべてのプレゼンテーションにはデフォルトで少なくとも 1 つの Slide Master が存在します。
- プレゼンテーションは複数の Slide Master を含めることができます。複数の Slide Master を追加して、プレゼンテーションの異なる部分を別々のスタイルで装飾できます。
Aspose.Slides では、スライドマスターは MasterSlide 型で表されます。
Aspose.Slides の Presentation オブジェクトは、getMasters によって取得できる MasterSlideCollection のリストを保持しており、プレゼンテーション内で定義されたすべてのマスタースライドを取得できます。
CRUD 操作に加えて、MasterSlideCollection クラスは次の便利なメソッドを提供します: addClone(LayoutSlide sourceLayout) および insertClone(int index, MasterSlide sourceMaster)。これらは基本的なスライド複製機能から継承されますが、スライドマスターに対して使用すると、複雑な設定を実装できます。
新しいスライドがプレゼンテーションに追加されると、スライドマスターが自動的に適用されます。既定では前のスライドのスライドマスターが選択されます。
Note: プレゼンテーションのスライドは getSlides() リストに格納され、新しいスライドはデフォルトでコレクションの末尾に追加されます。プレゼンテーションに単一の Slide Master が含まれる場合、そのスライドマスターがすべての新規スライドに適用されます。これにより、各スライドごとにスライドマスターを個別に指定する必要がなくなります。
PowerPoint と Aspose.Slides の原理は同じです。たとえば PowerPoint では、最後のスライドの下のラインをクリックすると、前のスライドと同じスライドマスターを持つ新しいスライドが作成されます:

Aspose.Slides では、Presentation クラスの addClone(Slide sourceSlide) メソッドを使用して同等の操作を行えます。
スライドマスターとスライド階層
スライドレイアウトとスライドマスターを組み合わせることで、最大限の柔軟性が得られます。スライドレイアウトはスライドマスターと同じスタイル(背景、フォント、図形など)を設定できますが、複数のスライドレイアウトをスライドマスターに組み込むと新しいスタイルが生成されます。スライドレイアウトを単一のスライドに適用すると、スライドマスターが適用したスタイルを上書きできます。
スライドマスターはすべての設定項目の上位に位置します: Slide Master → Slide Layout → Slide:
各 MasterSlide オブジェクトは、getLayoutSlides プロパティでスライドレイアウトのリストを取得できます。Slide 型は、getLayoutSlide プロパティで適用されているスライドレイアウトへの参照を保持します。スライドとスライドマスターの相互作用はスライドレイアウトを介して行われます。
Note
スライドマスターに含まれる要素
スライドマスターの変更方法を理解するには、その構成要素を把握する必要があります。以下は MasterSlide の主なプロパティです。
- getBackground – スライド背景の取得/設定。
- getBodyStyle – スライド本文のテキストスタイルの取得/設定。
- getShapes – スライドマスター上のすべての図形(プレースホルダー、画像フレームなど)の取得/設定。
- getControls – ActiveX コントロールの取得/設定。
- getThemeManager – テーママネージャの取得。
- getHeaderFooterManager – ヘッダー・フッターマネージャの取得。
スライドマスターのメソッド:
- getDependingSlides – スライドマスターに依存するすべてのスライドを取得。
- applyExternalThemeToDependingSlides – 現在のスライドマスターと新しいテーマを組み合わせて新しいスライドマスターを作成し、依存スライドに適用します。
スライドマスターの取得方法
PowerPoint では、[表示] → [スライドマスター] メニューからスライドマスターにアクセスできます:

Aspose.Slides では、次のようにスライドマスターにアクセスできます。
$pres = new Presentation();
try {
# プレゼンテーションのマスタースライドにアクセスできます
$masterSlide = $pres->getMasters()->get_Item(0);
} finally {
$pres->dispose();
}
MasterSlide クラスはスライドマスターを表します。getMasters メソッド(MasterSlideCollection 型)は、プレゼンテーション内で定義されたすべてのスライドマスターのリストを返します。
スライドマスターに画像を追加する方法
スライドマスターに画像を追加すると、そのマスターに依存するすべてのスライドに画像が表示されます。
たとえば、会社のロゴやいくつかの画像をスライドマスターに配置すれば、スライド編集モードに戻ったときにすべてのスライドにロゴが表示されます。

Aspose.Slides を使用してスライドマスターに画像を追加できます。
$pres = new Presentation();
try {
$picture;
$image = Images->fromFile("image.png");
try {
$picture = $pres->getImages()->addImage($image);
} finally {
if (!java_is_null($image)) {
$image->dispose();
}
}
$pres->getMasters()->get_Item(0)->getShapes()->addPictureFrame(ShapeType::Rectangle, 10, 10, 100, 100, $picture);
$pres->save("pres.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
See also
画像の追加に関する詳細は、Picture Frame 記事をご覧ください。スライドマスターにプレースホルダーを追加する方法
スライドマスター上の標準プレースホルダー例:
- Click to edit Master title style
- Edit Master text styles
- Second level
- Third level
これらはスライドマスターに基づくスライドでも表示されます。プレースホルダーをスライドマスターで編集すると、変更は自動的にスライドへ反映されます。
PowerPoint では、[スライドマスター] → [プレースホルダーの挿入] パスでプレースホルダーを追加できます:

以下は Aspose.Slides でのプレースホルダーの複雑な例です。スライドマスターからテンプレート化されたプレースホルダーを持つスライドを考えてみましょう:

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

まず、スライドマスターオブジェクトからタイトルプレースホルダーの内容を取得し、PlaceHolder.FillFormat フィールドを使用します:
これにより、スライドマスターに基づくすべてのスライドのタイトルスタイルと書式が変更されます:

スライドマスターの背景を変更する方法
マスタースライドの背景色を変更すると、プレゼンテーション内のすべての通常スライドが新しい色になります。以下の PHP コードが操作例です:
$pres = new Presentation();
try {
$master = $pres->getMasters()->get_Item(0);
$master->getBackground()->setType(BackgroundType::OwnBackground);
$master->getBackground()->getFillFormat()->setFillType(FillType::Solid);
$master->getBackground()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GREEN);
$pres->save("pres.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
スライドマスターを別プレゼンテーションにクローンする方法
別のプレゼンテーションにスライドマスターをクローンするには、宛先プレゼンテーションの addClone メソッドにスライドマスターを渡します。以下の PHP コードがクローン手順を示しています:
$presSource = new Presentation();
$presTarget = new Presentation();
try {
$master = $presTarget->getMasters()->addClone($presSource->getMasters()->get_Item(0));
} finally {
if (!java_is_null($presSource)) {
$presSource->dispose();
}
}
プレゼンテーションに複数のスライドマスターを追加する方法
Aspose.Slides では、任意のプレゼンテーションに複数のスライドマスターとスライドレイアウトを追加できます。これにより、さまざまなスタイル、レイアウト、書式設定オプションを柔軟に構成できます。
PowerPoint では、[スライドマスターメニュー] から新しいスライドマスターとレイアウトを追加できます:

Aspose.Slides では、addClone メソッドを呼び出すことで新しいスライドマスターを追加できます:
# 新しいマスタースライドを追加します
$secondMasterSlide = $pres->getMasters()->addClone($masterSlide);
スライドマスターの比較方法
マスタースライドは BaseSlide クラスを継承しており、equals メソッドでスライドを比較できます。構造と静的コンテンツが同一の場合に true を返します。
2 つのマスタースライドは、図形、スタイル、テキスト、アニメーション、その他の設定がすべて同じであれば等価とみなされます。スライド ID などの一意識別子や動的コンテンツ(例: 日付プレースホルダーの現在の日付)は比較対象外です。
スライドマスターをプレゼンテーションのデフォルトビューに設定する方法
Aspose.Slides でスライドマスターをプレゼンテーションのデフォルトビューとして設定できます。デフォルトビューはプレゼンテーションを開いたときに最初に表示されるビューです。
以下のコードがスライドマスターをプレゼンテーションのデフォルトビューに設定する手順を示しています:
# プレゼンテーション ファイルを表す Presentation クラスのインスタンスを作成
$presentation = new Presentation();
try {
# デフォルトビューを SlideMasterView に設定
$presentation->getViewProperties()->setLastView(ViewType::SlideMasterView);
# プレゼンテーションを保存
$presentation->save("PresView.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
未使用のマスタースライドを削除する方法
Aspose.Slides は removeUnusedMasterSlides メソッド(Compress クラス)を提供し、不要なマスタースライドを削除できます。以下の PHP コードが PowerPoint プレゼンテーションからマスタースライドを削除する例です:
$pres = new Presentation("pres.pptx");
try {
Compress->removeUnusedMasterSlides($pres);
$pres->save("pres-out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
PowerPoint のスライドマスターとは何ですか?
スライドマスターは、プレゼンテーション内のスライドのレイアウト、スタイル、テーマ、フォント、背景、その他のプロパティを定義するテンプレートです。一括ですべてのスライドの外観を設定・変更できます。
スライドマスターはプレゼンテーションでどのように適用されますか?
すべてのプレゼンテーションにはデフォルトで少なくとも 1 つの Slide Master が存在します。新しいスライドが追加されると、自動的にスライドマスターが適用され、通常は前のスライドのマスターが継承されます。複数のスライドマスターを使用して、プレゼンテーションの異なる部分を個別に装飾することも可能です。
スライドマスターでカスタマイズできる要素は何ですか?
スライドマスターは次の主要プロパティをカスタマイズできます:
- Background: スライドの背景を設定。
- BodyStyle: スライド本文のテキストスタイルを定義。
- Shapes: プレースホルダーや画像フレームなど、すべての図形を管理。
- Controls: ActiveX コントロールを操作。
- ThemeManager: テーママネージャにアクセス。
- HeaderFooterManager: ヘッダーとフッターを管理。
スライドマスターに画像を追加するには?
スライドマスターに画像を追加すると、そのマスターに依存するすべてのスライドに画像が表示されます。たとえば会社ロゴをスライドマスターに配置すれば、プレゼンテーション全体のスライドにロゴが表示されます。
スライドマスターとスライドレイアウトの関係は?
スライドレイアウトはスライドマスターと連携してスライドデザインに柔軟性をもたらします。スライドマスターが全体的なスタイルとテーマを定義し、スライドレイアウトがコンテンツ配置のバリエーションを提供します。階層は次の通りです:
- Slide Master → 全体的なスタイルを定義。
- Slide Layout → コンテンツ配置のバリエーションを提供。
- Slide → スライドレイアウトからデザインを継承。
1 つのプレゼンテーションに複数のスライドマスターを持てますか?
はい。プレゼンテーションに複数のスライドマスターを含めることができ、セクションごとに異なるデザインを適用して柔軟に装飾できます。
Aspose.Slides でスライドマスターを取得・変更するには?
Aspose.Slides では、スライドマスターは MasterSlide クラスで表されます。Presentation オブジェクトの getMasters メソッドでスライドマスターにアクセスできます。