PHPでプレゼンテーションスライドにアクセス

Aspose.Slides はスライドに 2 つの方法でアクセスできます: インデックスと ID による方法です。

インデックスでスライドにアクセス

プレゼンテーション内のすべてのスライドは、スライド位置に基づいて 0 から始まる数値で配置されています。最初のスライドはインデックス 0 でアクセスでき、2 番目のスライドはインデックス 1 でアクセスできます。以下同様です。

Presentation クラスはプレゼンテーション ファイルを表し、すべてのスライドを ISlideCollection コレクション(ISlide オブジェクトのコレクション)として公開します。この PHP コードはインデックスを使用してスライドにアクセスする方法を示しています:

  # プレゼンテーション ファイルを表す Presentation オブジェクトをインスタンス化します
  $pres = new Presentation("demo.pptx");
  try {
    # スライド インデックスを使用してスライドにアクセスします
    $slide = $pres->getSlides()->get_Item(0);
  } finally {
    $pres->dispose();
  }

ID でスライドにアクセス

プレゼンテーション内の各スライドには固有の ID が割り当てられています。Presentation クラスが公開する getSlideById メソッドを使用してその ID を指定できます。この PHP コードは有効なスライド ID を指定し、getSlideById メソッドでスライドにアクセスする方法を示しています:

  # プレゼンテーション ファイルを表す Presentation オブジェクトをインスタンス化します
  $pres = new Presentation("demo.pptx");
  try {
    # スライド ID を取得します
    $id = $pres->getSlides()->get_Item(0)->getSlideId();
    # スライド ID を使用してスライドにアクセスします
    $slide = $pres->getSlideById($id);
  } finally {
    $pres->dispose();
  }

スライドの位置を変更する

Aspose.Slides はスライドの位置を変更できます。たとえば、最初のスライドを 2 番目のスライドにすることができます。

  1. Presentation クラスのインスタンスを作成します。
  2. インデックスで位置を変更したいスライドの参照を取得します。
  3. setSlideNumber プロパティでスライドの新しい位置を設定します。
  4. 変更したプレゼンテーションを保存します。

この PHP コードは、位置 1 のスライドを位置 2 に移動する操作を示しています:

  # プレゼンテーション ファイルを表す Presentation オブジェクトをインスタンス化します
  $pres = new Presentation("Presentation.pptx");
  try {
    # 位置が変更されるスライドを取得します
    $sld = $pres->getSlides()->get_Item(0);
    # スライドの新しい位置を設定します
    $sld->setSlideNumber(2);
    # 変更されたプレゼンテーションを保存します
    $pres->save("helloworld_Pos.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }

最初のスライドが 2 番目になり、2 番目のスライドが 1 番目になりました。スライドの位置を変更すると、他のスライドは自動的に調整されます。

スライド番号を設定する

Presentation クラスが公開する setFirstSlideNumber プロパティを使用すると、プレゼンテーションの最初のスライドに新しい番号を指定できます。この操作により、他のスライド番号が再計算されます。

  1. Presentation クラスのインスタンスを作成します。
  2. スライド番号を取得します。
  3. スライド番号を設定します。
  4. 変更したプレゼンテーションを保存します。

この PHP コードは、最初のスライド番号を 10 に設定する操作を示しています:

  # プレゼンテーション ファイルを表す Presentation オブジェクトをインスタンス化します
  $pres = new Presentation("HelloWorld.pptx");
  try {
    # スライド番号を取得します
    $firstSlideNumber = $pres->getFirstSlideNumber();
    # スライド番号を設定します
    $pres->setFirstSlideNumber(10);
    # 変更されたプレゼンテーションを保存します
    $pres->save("Set_Slide_Number_out.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }

最初のスライドをスキップしたい場合は、2 番目のスライドから番号付けを開始し(最初のスライドの番号付けを非表示に)次のようにします:

  $presentation = new Presentation();
  try {
    $layoutSlide = $presentation->getLayoutSlides()->getByType(SlideLayoutType::Blank);
    $presentation->getSlides()->addEmptySlide($layoutSlide);
    $presentation->getSlides()->addEmptySlide($layoutSlide);
    $presentation->getSlides()->addEmptySlide($layoutSlide);
    # 最初のプレゼンテーションスライドの番号を設定します
    $presentation->setFirstSlideNumber(0);
    # すべてのスライドに対してスライド番号を表示します
    $presentation->getHeaderFooterManager()->setAllSlideNumbersVisibility(true);
    # 最初のスライドのスライド番号を非表示にします
    $presentation->getSlides()->get_Item(0)->getHeaderFooterManager()->setSlideNumberVisibility(false);
    # 変更されたプレゼンテーションを保存します
    $presentation->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($presentation)) {
      $presentation->dispose();
    }
  }

FAQ

ユーザーが見るスライド番号はコレクションのゼロベース インデックスと一致しますか?

スライドに表示される番号は任意の値(例: 10)から開始でき、インデックスと一致する必要はありません。この関係はプレゼンテーションの first slide number 設定で制御されます。

非表示スライドはインデックスに影響しますか?

はい。非表示スライドはコレクション内に残り、インデックス計算に含まれます。「非表示」は表示上の設定であり、コレクション内の位置には影響しません。

他のスライドが追加または削除されたときにスライドのインデックスは変わりますか?

はい。インデックスは常に現在のスライド順序を反映し、挿入、削除、移動操作が行われるたびに再計算されます。