Créer ou Gérer un Nœud de Forme SmartArt PowerPoint

Ajouter un Nœud SmartArt dans une Présentation PowerPoint en utilisant PHP

Aspose.Slides pour PHP via Java a fourni la plus simple API pour gérer les formes SmartArt de la manière la plus facile. Le code d’exemple suivant aidera à ajouter un nœud et un nœud enfant à l’intérieur de la forme SmartArt.

  1. Créez une instance de la classe Presentation et chargez la présentation avec la forme SmartArt.
  2. Obtenez la référence de la première diapositive en utilisant son index.
  3. Parcourez chaque forme à l’intérieur de la première diapositive.
  4. Vérifiez si la forme est de type SmartArt et cast l’objet sélectionné à SmartArt si c’est du SmartArt.
  5. Ajoutez un nouveau Nœud dans la forme SmartArt NodeCollection et définissez le texte dans le TextFrame.
  6. Maintenant, Ajoutez un Nœud Enfant dans le Nœud SmartArt nouvellement ajouté et définissez le texte dans le TextFrame.
  7. Enregistrez la présentation.
  # Charger la présentation souhaitée
  $pres = new Presentation("SimpleSmartArt.pptx");
  try {
    # Parcourir chaque forme à l'intérieur de la première diapositive
    foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
      # Vérifiez si la forme est de type SmartArt
      if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
        # Cast la forme à SmartArt
        $smart = $shape;
        # Ajout d'un nouveau Nœud SmartArt
        $TemNode = $smart->getAllNodes()->addNode();
        # Ajout de texte
        $TemNode->getTextFrame()->setText("Test");
        # Ajouter un nouveau nœud enfant dans le nœud parent. Il sera ajouté à la fin de la collection
        $newNode = $TemNode->getChildNodes()->addNode();
        # Ajout de texte
        $newNode->getTextFrame()->setText("Nouveau Nœud Ajouté");
      }
    }
    # Enregistrer la Présentation
    $pres->save("AddSmartArtNode.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Ajouter un Nœud SmartArt à une Position Spécifique

Dans le code d’exemple suivant, nous avons expliqué comment ajouter les nœuds enfants appartenant aux nœuds respectifs de la forme SmartArt à une position particulière.

  1. Créez une instance de la classe Presentation.
  2. Obtenez la référence de la première diapositive en utilisant son index.
  3. Ajoutez une forme SmartArt de type StackedList dans la diapositive accédée.
  4. Accédez au premier nœud dans la forme SmartArt ajoutée.
  5. Maintenant, ajoutez le Nœud Enfant pour le Nœud sélectionné à la position 2 et définissez son texte.
  6. Enregistrez la Présentation.
  # Création d'une instance de présentation
  $pres = new Presentation();
  try {
    # Accéder à la diapositive de la présentation
    $slide = $pres->getSlides()->get_Item(0);
    # Ajouter une forme Smart Art
    $smart = $slide->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::StackedList);
    # Accéder au nœud SmartArt à l'index 0
    $node = $smart->getAllNodes()->get_Item(0);
    # Ajouter un nouveau nœud enfant à la position 2 dans le nœud parent
    $chNode = $node->getChildNodes()->addNodeByPosition(2);
    # Ajouter du texte
    $chNode->getTextFrame()->setText("Texte d'Échantillon Ajouté");
    # Enregistrer la Présentation
    $pres->save("AddSmartArtNodeByPosition.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Accéder au Nœud SmartArt dans une Présentation PowerPoint en utilisant PHP

Le code d’exemple suivant vous aidera à accéder aux nœuds à l’intérieur de la forme SmartArt. Veuillez noter que vous ne pouvez pas changer le LayoutType du SmartArt car il est en lecture seule et n’est défini que lorsque la forme SmartArt est ajoutée.

  1. Créez une instance de la classe Presentation et chargez la présentation avec la forme SmartArt.
  2. Obtenez la référence de la première diapositive en utilisant son index.
  3. Parcourez chaque forme à l’intérieur de la première diapositive.
  4. Vérifiez si la forme est de type SmartArt et cast l’objet sélectionné à SmartArt si c’est du SmartArt.
  5. Parcourez tous les Nœuds à l’intérieur de la forme SmartArt.
  6. Accédez et affichez des informations telles que la position du Nœud SmartArt, le niveau et le texte.
  # Instancier la classe Presentation
  $pres = new Presentation("SmartArtShape.pptx");
  try {
    # Obtenez la première diapositive
    $slide = $pres->getSlides()->get_Item(0);
    # Parcourez chaque forme à l'intérieur de la première diapositive
    foreach($slide->getShapes() as $shape) {
      # Vérifiez si la forme est de type SmartArt
      if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
        # Cast la forme à SmartArt
        $smart = $shape;
        # Parcourez tous les nœuds à l'intérieur du SmartArt
        for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
          # Accéder au nœud SmartArt à l'index i
          $node = $smart->getAllNodes()->get_Item($i);
          # Imprimer les paramètres du nœud SmartArt
          System->out->print($node->getTextFrame()->getText() . " " . $node->getLevel() . " " . $node->getPosition());
        }
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Accéder au Nœud Enfant SmartArt

Le code d’exemple suivant vous aidera à accéder aux nœuds enfants appartenant aux nœuds respectifs de la forme SmartArt.

  1. Créez une instance de la classe Presentation et chargez la présentation avec la forme SmartArt.
  2. Obtenez la référence de la première diapositive en utilisant son index.
  3. Parcourez chaque forme à l’intérieur de la première diapositive.
  4. Vérifiez si la forme est de type SmartArt et cast l’objet sélectionné à SmartArt si c’est du SmartArt.
  5. Parcourez tous les Nœuds à l’intérieur de la forme SmartArt.
  6. Pour chaque forme SmartArt sélectionnée Nœud, parcourez tous les Nœuds Enfants à l’intérieur du nœud particulier.
  7. Accédez et affichez des informations telles que la position, le niveau et le texte du Nœud Enfant.
  # Instancier la classe Presentation
  $pres = new Presentation("AccessChildNodes.pptx");
  try {
    # Obtenir la première diapositive
    $slide = $pres->getSlides()->get_Item(0);
    # Parcourez chaque forme à l'intérieur de la première diapositive
    foreach($slide->getShapes() as $shape) {
      # Vérifiez si la forme est de type SmartArt
      if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
        # Cast la forme à SmartArt
        $smart = $shape;
        # Parcourez tous les nœuds à l'intérieur du SmartArt
        for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
          # Accéder au nœud SmartArt à l'index i
          $node0 = $smart->getAllNodes()->get_Item($i);
          # Parcourir les nœuds enfants dans le nœud SmartArt à l'index i
          for($j = 0; $j < java_values($node0->getChildNodes()->size()) ; $j++) {
            # Accéder au nœud enfant dans le nœud SmartArt
            $node = $node0->getChildNodes()->get_Item($j);
            # Imprimer les paramètres du nœud enfant SmartArt
            System->out->print("j = " . $j . ", Texte = " . $node->getTextFrame()->getText() . ",  Niveau = " . $node->getLevel() . ", Position = " . $node->getPosition());
          }
        }
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Accéder au Nœud Enfant SmartArt à une Position Spécifique

Dans cet exemple, nous allons apprendre à accéder aux nœuds enfants à une position particulière appartenant aux nœuds respectifs de la forme SmartArt.

  1. Créez une instance de la classe Presentation.
  2. Obtenez la référence de la première diapositive en utilisant son index.
  3. Ajoutez une forme SmartArt de type StackedList.
  4. Accédez à la forme SmartArt ajoutée.
  5. Accédez au nœud à l’index 0 pour la forme SmartArt accédée.
  6. Maintenant, accédez au Nœud Enfant à la position 1 pour le nœud SmartArt accédé en utilisant la méthode get_Item().
  7. Accédez et affichez des informations telles que la position, le niveau et le texte du Nœud Enfant.
  # Instancier la présentation
  $pres = new Presentation();
  try {
    # Accéder à la première diapositive
    $slide = $pres->getSlides()->get_Item(0);
    # Ajouter la forme SmartArt dans la première diapositive
    $smart = $slide->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::StackedList);
    # Accéder au nœud SmartArt à l'index 0
    $node = $smart->getAllNodes()->get_Item(0);
    # Accéder au nœud enfant à la position 1 dans le nœud parent
    $position = 1;
    $chNode = $node->getChildNodes()->get_Item($position);
    # Imprimer les paramètres du nœud enfant SmartArt
    System->out->print("Texte = " . $chNode->getTextFrame()->getText() . ",  Niveau = " . $chNode->getLevel() . ", Position = " . $chNode->getPosition());
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Supprimer un Nœud SmartArt dans une Présentation PowerPoint en utilisant PHP

Dans cet exemple, nous allons apprendre à supprimer les nœuds à l’intérieur de la forme SmartArt.

  1. Créez une instance de la classe Presentation et chargez la présentation avec la forme SmartArt.
  2. Obtenez la référence de la première diapositive en utilisant son index.
  3. Parcourez chaque forme à l’intérieur de la première diapositive.
  4. Vérifiez si la forme est de type SmartArt et cast l’objet sélectionné à SmartArt si c’est du SmartArt.
  5. Vérifiez si le SmartArt a plus de 0 nœuds.
  6. Sélectionnez le nœud SmartArt à supprimer.
  7. Maintenant, supprimez le nœud sélectionné en utilisant la méthode RemoveNode.
  8. Enregistrez la présentation.
  # Charger la présentation souhaitée
  $pres = new Presentation("AddSmartArtNode.pptx");
  try {
    # Parcourez chaque forme à l'intérieur de la première diapositive
    foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
      # Vérifiez si la forme est de type SmartArt
      if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
        # Cast la forme à SmartArt
        $smart = $shape;
        if (java_values($smart->getAllNodes()->size()) > 0) {
          # Accéder au nœud SmartArt à l'index 0
          $node = $smart->getAllNodes()->get_Item(0);
          # Supprimer le nœud sélectionné
          $smart->getAllNodes()->removeNode($node);
        }
      }
    }
    # Enregistrer la Présentation
    $pres->save("RemoveSmartArtNode.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Supprimer un Nœud SmartArt à une Position Spécifique

Dans cet exemple, nous allons apprendre à supprimer les nœuds à l’intérieur de la forme SmartArt à une position particulière.

  1. Créez une instance de la classe Presentation et chargez la présentation avec la forme SmartArt.
  2. Obtenez la référence de la première diapositive en utilisant son index.
  3. Parcourez chaque forme à l’intérieur de la première diapositive.
  4. Vérifiez si la forme est de type SmartArt et cast l’objet sélectionné à SmartArt si c’est du SmartArt.
  5. Sélectionnez le nœud de forme SmartArt à l’index 0.
  6. Maintenant, vérifiez si le nœud SmartArt sélectionné a plus de 2 nœuds enfants.
  7. Maintenant, supprimez le nœud à la Position 1 en utilisant la méthode RemoveNode.
  8. Enregistrez la présentation.
  # Charger la présentation souhaitée
  $pres = new Presentation("AddSmartArtNode.pptx");
  try {
    # Parcourez chaque forme à l'intérieur de la première diapositive
    foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
      # Vérifiez si la forme est de type SmartArt
      if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
        # Cast la forme à SmartArt
        $smart = $shape;
        if (java_values($smart->getAllNodes()->size()) > 0) {
          # Accéder au nœud SmartArt à l'index 0
          $node = $smart->getAllNodes()->get_Item(0);
          if (java_values($node->getChildNodes()->size()) >= 2) {
            # Supprimer le nœud enfant à la position 1
            $node->getChildNodes()->removeNode(1);
          }
        }
      }
    }
    # Enregistrer la Présentation
    $pres->save("RemoveSmartArtNodeByPosition.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Définir une Position Personnalisée pour le Nœud Enfant dans SmartArt

Aspose.Slides pour PHP via Java prend maintenant en charge la définition des propriétés X et Y de SmartArtShape. Le fragment de code ci-dessous montre comment définir la position, la taille et la rotation d’un SmartArtShape personnalisé. Veuillez également noter que l’ajout de nouveaux nœuds entraîne un recalcul des positions et des tailles de tous les nœuds. Avec les paramètres de position personnalisés, l’utilisateur peut également disposer les nœuds selon les exigences.

  # Instancier la classe Presentation
  $pres = new Presentation("SimpleSmartArt.pptx");
  try {
    $smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(20, 20, 600, 500, SmartArtLayoutType::OrganizationChart);
    # Déplacer la forme SmartArt vers une nouvelle position
    $node = $smart->getAllNodes()->get_Item(1);
    $shape = $node->getShapes()->get_Item(1);
    $shape->setX($shape->getX() + $shape->getWidth() * 2);
    $shape->setY($shape->getY() - $shape->getHeight() * 2);
    # Changer la largeur des formes SmartArt
    $node = $smart->getAllNodes()->get_Item(2);
    $shape = $node->getShapes()->get_Item(1);
    $shape->setWidth($shape->getWidth() + $shape->getWidth() * 2);
    # Changer la hauteur des formes SmartArt
    $node = $smart->getAllNodes()->get_Item(3);
    $shape = $node->getShapes()->get_Item(1);
    $shape->setHeight($shape->getHeight() + $shape->getHeight() * 2);
    # Changer la rotation des formes SmartArt
    $node = $smart->getAllNodes()->get_Item(4);
    $shape = $node->getShapes()->get_Item(1);
    $shape->setRotation(90);
    $pres->save("SmartArt.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }

Vérifier le Nœud Assistant

Nous utiliserons la forme SmartArt source suivante pour notre étude dans différentes sections de cet article.

todo:image_alt_text
Figure : Forme SmartArt Source dans la diapositive

Dans le code d’exemple suivant, nous allons examiner comment identifier les Nœuds Assistants dans la collection de nœuds SmartArt et les modifier.

  1. Créez une instance de la classe Presentation et chargez la présentation avec la forme SmartArt.
  2. Obtenez la référence de la deuxième diapositive en utilisant son index.
  3. Parcourez chaque forme à l’intérieur de la première diapositive.
  4. Vérifiez si la forme est de type SmartArt et cast l’objet sélectionné à SmartArt si c’est du SmartArt.
  5. Parcourez tous les nœuds à l’intérieur de la forme SmartArt et vérifiez s’ils sont des Nœuds Assistants.
  6. Changez le statut du Nœud Assistant en nœud normal.
  7. Enregistrez la présentation.
  # Création d'une instance de présentation
  $pres = new Presentation("AddNodes.pptx");
  try {
    # Parcourez chaque forme à l'intérieur de la première diapositive
    foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
      # Vérifiez si la forme est de type SmartArt
      if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
        # Cast la forme à SmartArt
        $smart = $shape;
        # Parcourir tous les nœuds de la forme SmartArt
        for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
          $node = $smart->getAllNodes()->get_Item($i);
          # Vérifiez si le nœud est un nœud Assistant
          if ($node->isAssistant()) {
            # Définir le nœud Assistant sur false et le rendre nœud normal
            $node->isAssistant(false);
          }
        }
      }
    }
    # Enregistrer la Présentation
    $pres->save("ChangeAssitantNode.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }
todo:image_alt_text
Figure : Nœuds Assistants Changés dans la forme SmartArt à l’intérieur de la diapositive

Définir le Format de Remplissage du Nœud

Aspose.Slides pour PHP via Java permet d’ajouter des formes SmartArt personnalisées et de définir leur format de remplissage. Cet article explique comment créer et accéder aux formes SmartArt et définir leur format de remplissage en utilisant Aspose.Slides pour PHP via Java.

Veuillez suivre les étapes ci-dessous :

  1. Créez une instance de la classe Presentation.
  2. Obtenez la référence d’une diapositive en utilisant son index.
  3. Ajoutez une forme SmartArt en définissant son LayoutType.
  4. Définissez le FillFormat pour les nœuds de la forme SmartArt.
  5. Écrivez la présentation modifiée sous forme de fichier PPTX.
  # Instancier la présentation
  $pres = new Presentation();
  try {
    # Accéder à la diapositive
    $slide = $pres->getSlides()->get_Item(0);
    # Ajouter la forme SmartArt et les nœuds
    $chevron = $slide->getShapes()->addSmartArt(10, 10, 800, 60, SmartArtLayoutType::ClosedChevronProcess);
    $node = $chevron->getAllNodes()->addNode();
    $node->getTextFrame()->setText("Du texte ici");
    # Définir la couleur de remplissage du nœud
    foreach($node->getShapes() as $item) {
      $item->getFillFormat()->setFillType(FillType::Solid);
      $item->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    }
    # Enregistrer la présentation
    $pres->save("TestSmart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Générer une Miniature du Nœud Enfant SmartArt

Les développeurs peuvent générer une miniature du nœud enfant d’un SmartArt en suivant les étapes ci-dessous :

  1. Créez une instance de la classe Presentation.
  2. Ajoutez SmartArt.
  3. Obtenez la référence d’un nœud en utilisant son index.
  4. Obtenez l’image miniature.
  5. Enregistrez l’image miniature dans le format d’image souhaité.
  # Instancier la classe Presentation qui représente le fichier PPTX
  $pres = new Presentation();
  try {
    # Ajouter SmartArt
    $smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::BasicCycle);
    # Obtenir la référence d'un nœud en utilisant son index
    $node = $smart->getNodes()->get_Item(1);
    # Obtenir la miniature
    $slideImage = $node->getShapes()->get_Item(0)->getImage();
    # Enregistrer la miniature
    try {
      $slideImage->save("SmartArt_ChildNote_Thumbnail.png", ImageFormat::Png);
    } finally {
      if (!java_is_null($slideImage)) {
        $slideImage->dispose();
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }