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

概要

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

Title Slide layout – タイトルとサブタイトル用の 2 つのテキスト プレースホルダーが含まれます。

Title and Content layout – 上部に小さなタイトル プレースホルダー、下部にテキスト、箇条書き、チャート、画像などのメイン コンテンツ用の大きなプレースホルダーが配置されます。

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

スライドレイアウトはスライドマスターの一部であり、プレゼンテーション全体のレイアウト スタイルを定義する最上位スライドです。レイアウト スライドはスライドマスターから、タイプ、名前、または一意の ID でアクセスおよび変更できます。または、プレゼンテーション内で特定のレイアウト スライドを直接編集することもできます。

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

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

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

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

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

// PowerPoint ファイルを表す Presentation クラスのインスタンスを作成します。
Presentation presentation = new Presentation("Sample.pptx");
try {
    // レイアウトスライドのタイプを順に確認して、レイアウトスライドを選択します。
    IMasterLayoutSlideCollection layoutSlides = presentation.getMasters().get_Item(0).getLayoutSlides();
    ILayoutSlide layoutSlide = null;
    if (layoutSlides.getByType(SlideLayoutType.TitleAndObject) != null)
        layoutSlide = layoutSlides.getByType(SlideLayoutType.TitleAndObject);
    else
        layoutSlide = layoutSlides.getByType(SlideLayoutType.Title);

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

        if (layoutSlide == null) {
            for (ILayoutSlide titleLayoutSlide : layoutSlides) {
                if (titleLayoutSlide.getName().equals("Title")) {
                    layoutSlide = titleLayoutSlide;
                    break;
                }
            }

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

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

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

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

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

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

Presentation presentation = new Presentation("Presentation.pptx");
try {
    Compress.removeUnusedLayoutSlides(presentation);

    presentation.save("Output.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

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

Aspose.Slides は、ILayoutSlide.getPlaceholderManager メソッドを提供し、レイアウト スライドに新しいプレースホルダーを追加できます。

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

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)

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

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

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

    // 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.getSlides().addEmptySlide(layout);

    presentation.save("Placeholders.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

結果:

The placeholders on the layout slide

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

PowerPoint プレゼンテーションでは、日付、スライド番号、カスタム テキストなどのフッター要素は、スライドレイアウトに応じて表示/非表示を切り替えることができます。Aspose.Slides for Android を使用すると、これらフッタープレースホルダーの表示状態を制御できます。特定のレイアウトでフッター情報を表示し、他のレイアウトはシンプルに保ちたい場合に便利です。

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

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

Presentation presentation = new Presentation("Presentation.ppt");
try {
    ILayoutSlideHeaderFooterManager headerFooterManager = presentation.getLayoutSlides().get_Item(0).getHeaderFooterManager();

    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);
} finally {
    presentation.dispose();
}

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

PowerPoint プレゼンテーションでは、日付、スライド番号、カスタム テキストなどのフッター要素をマスタースライドレベルで制御し、すべてのレイアウト スライドに一貫した表示を持たせることができます。Aspose.Slides for Android は、マスタースライド上のフッタープレースホルダーの表示と内容を設定し、これらの設定をすべての子レイアウト スライドに伝播させる機能を提供します。

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

以下の Java コードは、この操作を示しています:

Presentation presentation = new Presentation("Presentation.ppt");
try {
    IMasterSlideHeaderFooterManager headerFooterManager = presentation.getMasters().get_Item(0).getHeaderFooterManager();

    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);
} finally {
    presentation.dispose();
}

FAQ

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

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

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

はい、getLayoutSlides メソッドで取得できるレイアウトスライドコレクションからレイアウトスライドをクローンし、addClone メソッドを使用して別のプレゼンテーションに挿入できます。

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

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