スライドマスタ

PowerPointにおけるスライドマスタとは

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

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

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

これが基本的なスライドマスタ操作です:

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

これがスライドマスタに関するより高度な操作です:

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

スライドマスタの適用方法

スライドマスタを操作する前に、それらがプレゼンテーションでどのように使用され、スライドに適用されるかを理解したい場合があります。

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

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

Aspose.Slidesのプレゼンテーション オブジェクトには、getMasters メソッドがあり、IMasterSlideCollection タイプのリストを返します。これには、プレゼンテーションで定義されているすべてのマスタースライドのリストが含まれています。

CRUD操作に加えて、IMasterSlideCollectionインターフェースには、次のような便利なメソッドがあります: addClone(ILayoutSlide sourceLayout) およびinsertClone(int index, IMasterSlide sourceMaster) メソッド。これらのメソッドは、基本的なスライドクローン機能が継承されています。しかし、スライドマスタを扱うときは、これらのメソッドを使用して複雑な設定を実装できます。

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

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

原則はPowerPointとAspose.Slidesで同じです。例えば、PowerPointでは、新しいプレゼンテーションを追加する際に、最後のスライドの下のボトムラインを単に押すことで、新しいスライド(最後のプレゼンテーションのスライドマスタ付き)が作成されます:

todo:image_alt_text

Aspose.Slidesでは、addClone(ISlide sourceSlide)メソッドを使用して同等の作業を行うことができます。

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

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

スライドマスタはすべてのセットアップ項目の優先度が高くなります: スライドマスタ -> スライドレイアウト -> スライド:

todo:image_alt_text

IMasterSlideオブジェクトには、スライドレイアウトのリストが含まれるgetLayoutSlidesプロパティがあります。Slideタイプには、スライドに適用されるスライドレイアウトへのリンクを持つgetLayoutSlideプロパティがあります。スライドとスライドマスタの間の相互作用は、スライドレイアウトを通じて発生します。

スライドマスタの構成要素

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

  • getBackground スライドの背景を取得/設定します。
  • getBodyStyle - スライドの本文のテキストスタイルを取得/設定します。
  • getShapes スライドマスタのすべての形状を取得/設定します(プレースホルダ、画像フレームなど)。
  • getControls ActiveXコントロールを取得/設定します。
  • getThemeManager - テーママネージャを取得します。
  • getHeaderFooterManager - ヘッダーとフッターのマネージャを取得します。

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

  • getDependingSlides - スライドマスタに依存するすべてのスライドを取得します。
  • applyExternalThemeToDependingSlides - 現在のスライドマスタと新しいテーマに基づいて新しいスライドマスタを作成できるようにします。新しいスライドマスタは、すべての依存スライドに適用されます。

スライドマスタの取得

PowerPointでは、スライドマスタにアクセスするには、[表示] -> [スライドマスタ]メニューからアクセスします:

todo:image_alt_text

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

Presentation pres = new Presentation();
try {
    // プレゼンテーションのマスタースライドにアクセスを提供
    IMasterSlide masterSlide = pres.getMasters().get_Item(0);
} finally {
    pres.dispose();
}

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

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

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

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

todo:image_alt_text

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

Presentation pres = new Presentation();
try {
    IPPImage picture;
    IImage image = Images.fromFile("image.png");
    try {
        picture = pres.getImages().addImage(image);
    } finally {
        if (image != null) image.dispose();
    }
    pres.getMasters().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle, 10, 10, 100, 100, picture);

    pres.save("pres.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

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

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

  • マスタタイトルスタイルを編集するためにクリック

  • マスタテキストスタイルの編集

  • 第二レベル

  • 第三レベル

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

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

todo:image_alt_text

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

todo:image_alt_text

次のようにスライドマスタでタイトルとサブタイトルのフォーマットを変更したいと思います:

todo:image_alt_text

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

public static void main(String[] args) {
    Presentation pres = new Presentation();
    try {
        IMasterSlide master = pres.getMasters().get_Item(0);
        IAutoShape placeHolder = findPlaceholder(master, PlaceholderType.Title);
        placeHolder.getFillFormat().setFillType(FillType.Gradient);
        placeHolder.getFillFormat().getGradientFormat().setGradientShape(GradientShape.Linear);
        placeHolder.getFillFormat().getGradientFormat().getGradientStops().add(0, new Color(255, 0, 0));
        placeHolder.getFillFormat().getGradientFormat().getGradientStops().add(255, new Color(128, 0, 128));

        pres.save("pres.pptx", SaveFormat.Pptx);
    } finally {
        if (pres != null) pres.dispose();
    }
}

static IAutoShape findPlaceholder(IMasterSlide master, int type)
{
    for (IShape shape : master.getShapes())
    {
        IAutoShape autoShape = (IAutoShape) shape;
        if (autoShape != null)
        {
            if (autoShape.getPlaceholder().getType() == type)
            {
                return autoShape;
            }
        }
    }

    return null;
}

スライドマスタに基づくすべてのスライドに対して、タイトルスタイルとフォーマットが変更されます:

todo:image_alt_text

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

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

Presentation pres = new Presentation();
try {
    IMasterSlide master = pres.getMasters().get_Item(0);
    master.getBackground().setType(BackgroundType.OwnBackground);
    master.getBackground().getFillFormat().setFillType(FillType.Solid);
    master.getBackground().getFillFormat().getSolidFillColor().setColor(Color.GREEN);

    pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

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

スライドマスタを別のプレゼンテーションにクローンするには、目的のプレゼンテーションからaddCloneメソッドを呼び出します。このJavaコードは、スライドマスタを別のプレゼンテーションにクローンする方法を示しています:

Presentation presSource = new Presentation();
Presentation presTarget = new Presentation();
try {
    IMasterSlide master = presTarget.getMasters().addClone(presSource.getMasters().get_Item(0));
} finally {
    if (presSource != null) presSource.dispose();
}

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

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

PowerPointでは、新しいスライドマスタとレイアウトを(「スライドマスタメニュー」から)次のように追加できます:

todo:image_alt_text

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

// 新しいマスタースライドを追加
IMasterSlide secondMasterSlide = pres.getMasters().addClone(masterSlide);

スライドマスタの比較

マスタースライドは、スライドを比較するために使用できるequalsメソッドを含むIBaseSlideインターフェースを実装しています。このメソッドは、構造と静的コンテンツが同一のマスタースライドに対してtrueを返します。

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

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

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

// プレゼンテーションファイルを表すPresentationクラスをインスタンス化します
Presentation presentation = new Presentation();
try {
    // デフォルトビューをスライドマスタービューとして設定します
    presentation.getViewProperties().setLastView(ViewType.SlideMasterView);

    // プレゼンテーションを保存します
    presentation.save("PresView.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

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

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

Presentation pres = new Presentation("pres.pptx");
 try {
     Compress.removeUnusedMasterSlides(pres);

     pres.save("pres-out.pptx", SaveFormat.Pptx);
 } finally {
     if (pres != null) pres.dispose();
 }