PHP を使用して PowerPoint プレゼンテーションの SmartArt を管理する

SmartArt オブジェクトからテキストを取得する

現在、TextFrame メソッドがSmartArtShapeクラスに追加されました。このプロパティを使用すると、ノードのテキストだけでなくSmartArtからすべてのテキストを取得できます。以下のサンプルコードはSmartArtノードからテキストを取得するのに役立ちます。

  $pres = new Presentation("Presentation.pptx");
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $smartArt = $slide->getShapes()->get_Item(0);
    $smartArtNodes = $smartArt->getAllNodes();
    foreach($smartArtNodes as $smartArtNode) {
      foreach($smartArtNode->getShapes() as $nodeShape) {
        if (!java_is_null($nodeShape->getTextFrame())) {
          echo($nodeShape->getTextFrame()->getText());
        }
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

SmartArt オブジェクトのレイアウト タイプを変更する

SmartArtのレイアウト タイプを変更するには、以下の手順に従ってください。

  • Presentationクラスのインスタンスを作成します。
  • インデックスを使用してスライドの参照を取得します。
  • SmartArtのBasicBlockListを追加します。
  • LayoutTypeをBasicProcessに変更します。
  • プレゼンテーションをPPTXファイルとして書き出します。

以下の例では、2つのシェイプ間にコネクタを追加しています。

  $pres = new Presentation();
  try {
    # SmartArt BasicProcess を追加
    $smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::BasicBlockList);
    # LayoutType を BasicProcess に変更
    $smart->setLayout(SmartArtLayoutType::BasicProcess);
    # プレゼンテーションを保存
    $pres->save("ChangeSmartArtLayout_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

SmartArt オブジェクトの非表示プロパティを確認する

注意: メソッドSmartArtNode::isHidden()は、このノードがデータモデル内で非表示ノードの場合にtrueを返します。SmartArtの任意のノードの非表示プロパティを確認するには、以下の手順に従ってください。

  • Presentationクラスのインスタンスを作成します。
  • SmartArtのRadialCycleを追加します。
  • SmartArtにノードを追加します。
  • visibilityプロパティを確認します。
  • プレゼンテーションをPPTXファイルとして書き出します。

以下の例では、2つのシェイプ間にコネクタを追加しています。

  $pres = new Presentation();
  try {
    # SmartArt BasicProcess を追加
    $smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::RadialCycle);
    # SmartArt にノードを追加
    $node = $smart->getAllNodes()->addNode();
    # isHidden プロパティを確認
    $hidden = $node->isHidden();// true を返します

    if ($hidden) {
      # 何らかのアクションまたは通知を実行
    }
    # プレゼンテーションを保存
    $pres->save("CheckSmartArtHiddenProperty_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

組織図タイプを取得または設定する

メソッドSmartArtNode::getOrganizationChartLayout()SmartArtNode::setOrganizationChartLayout(int)は、現在のノードに関連付けられた組織図タイプの取得または設定を可能にします。組織図タイプを取得または設定するには、以下の手順に従ってください。

  • Presentationクラスのインスタンスを作成します。
  • スライドにSmartArtを追加します。
  • 組織図タイプを取得またはset the organization chart typeします。
  • プレゼンテーションをPPTXファイルとして書き出します。

以下の例では、2つのシェイプ間にコネクタを追加しています。

  $pres = new Presentation();
  try {
    # SmartArt BasicProcess を追加
    $smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::OrganizationChart);
    # 組織図のタイプを取得または設定
    $smart->getNodes()->get_Item(0)->setOrganizationChartLayout(OrganizationChartLayoutType::LeftHanging);
    # プレゼンテーションを保存
    $pres->save("OrganizeChartLayoutType_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

画像組織図を作成する

Aspose.Slides for PHP via Java は、PictureOrganizationチャートを簡単に作成できるシンプルなAPIを提供します。スライド上にチャートを作成するには:

  1. Presentationクラスのインスタンスを作成します。
  2. インデックスでスライドの参照を取得します。
  3. デフォルトデータと目的のタイプ(ChartType::PictureOrganizationChart)のチャートを追加します。
  4. 変更されたプレゼンテーションをPPTXファイルに書き出します。

以下のコードはチャートを作成するために使用されます。

  $pres = new Presentation("test.pptx");
  try {
    $smartArt = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::PictureOrganizationChart);
    $pres->save("OrganizationChart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

SmartArt の状態を取得または設定する

SmartArtのレイアウト タイプを変更するには、以下の手順に従ってください。

  1. Presentationクラスのインスタンスを作成します。
  2. スライドにSmartArtを追加します。
  3. SmartArtダイアグラムの状態をGetまたはSetします。
  4. プレゼンテーションをPPTXファイルとして書き出します。

以下のコードはチャートを作成するために使用されます。

  # PPTX ファイルを表す Presentation クラスをインスタンス化
  $pres = new Presentation();
  try {
    # SmartArt BasicProcess を追加
    $smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::BasicProcess);
    # SmartArt ダイアグラムの状態を取得または設定
    $smart->setReversed(true);
    $flag = $smart->isReversed();
    # プレゼンテーションを保存
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

FAQ

SmartArt は RTL 言語向けのミラーリング/反転をサポートしていますか?

はい。選択した SmartArt タイプが反転をサポートしている場合、setReversedメソッドはダイアグラムの方向(LTR/RTL)を切り替えます。

SmartArt を同じスライドまたは別のプレゼンテーションにコピーし、書式を保持するにはどうすればよいですか?

シェイプ コレクションを介してclone the SmartArt shapeShapeCollection::addClone)またはこのシェイプを含むclone the entire slide を使用できます。どちらの方法もサイズ、位置、スタイルを保持します。

SmartArt をプレビューやウェブエクスポート用のラスタ画像にレンダリングするにはどうすればよいですか?

API を使用してスライド(またはプレゼンテーション全体)を PNG/JPEG に変換することで、Render the slideできます。SmartArt はスライドの一部として描画されます。

複数ある場合、スライド上の特定の SmartArt をプログラムで選択するにはどうすればよいですか?

一般的な方法は、alternative text(Alt Text)やname を使用し、slide shapes 内でその属性でシェイプを検索し、タイプがSmartArtであることを確認することです。ドキュメントではシェイプの検索と操作の典型的な手法が説明されています。