Gérer SmartArt dans les présentations PowerPoint avec Java

Obtenir le texte d’un objet SmartArt

La méthode TextFrame a maintenant été ajoutée à l’interface ISmartArtShape et à la classe SmartArtShape respectivement. Cette propriété vous permet d’obtenir tout le texte de SmartArt s’il ne se compose pas uniquement du texte des nœuds. Le code d’exemple suivant vous aidera à obtenir le texte d’un nœud SmartArt.

Presentation pres = new Presentation("Presentation.pptx");
try {
    ISlide slide = pres.getSlides().get_Item(0);
    ISmartArt smartArt = (ISmartArt)slide.getShapes().get_Item(0);

    ISmartArtNodeCollection smartArtNodes = smartArt.getAllNodes();
    for (ISmartArtNode smartArtNode : smartArtNodes)
    {
        for (ISmartArtShape nodeShape : smartArtNode.getShapes())
        {
            if (nodeShape.getTextFrame() != null)
                System.out.println(nodeShape.getTextFrame().getText());
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

Modifier le type de mise en page d’un objet SmartArt

Afin de modifier le type de mise en page de SmartArt. Veuillez suivre les étapes ci-dessous :

  • Créez une instance de la classe Presentation.
  • Obtenez la référence d’une diapositive en utilisant son index.
  • Ajoutez SmartArt BasicBlockList.
  • Modifiez LayoutType en BasicProcess.
  • Enregistrez la présentation au format PPTX. Dans l’exemple ci-dessous, nous avons ajouté un connecteur entre deux formes.
Presentation pres = new Presentation();
try {
    // Ajouter SmartArt BasicProcess
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicBlockList);

    // Modifier LayoutType en BasicProcess
    smart.setLayout(SmartArtLayoutType.BasicProcess);

    // Enregistrement de la présentation
    pres.save("ChangeSmartArtLayout_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Vérifier la propriété Visibility d’un objet SmartArt

Veuillez noter : la méthode ISmartArtNode.isHidden() renvoie true si ce nœud est un nœud masqué dans le modèle de données. Afin de vérifier la propriété masquée de n’importe quel nœud de SmartArt. Veuillez suivre les étapes ci-dessous :

  • Créez une instance de la classe Presentation.
  • Ajoutez SmartArt RadialCycle.
  • Ajoutez un nœud sur le SmartArt.
  • Vérifiez la propriété visibility.
  • Enregistrez la présentation au format PPTX. Dans l’exemple ci-dessous, nous avons ajouté un connecteur entre deux formes.
Presentation pres = new Presentation();
try {
    // Ajouter SmartArt BasicProcess 
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.RadialCycle);

    // Ajouter un nœud sur SmartArt 
    ISmartArtNode node = smart.getAllNodes().addNode();

    // Vérifier la propriété isHidden
    boolean hidden = node.isHidden(); // Renvoie true

    if (hidden)
    {
        // Effectuer des actions ou des notifications
    }
    // Enregistrement de la présentation
    pres.save("CheckSmartArtHiddenProperty_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Obtenir ou définir le type de diagramme d’organisation

Les méthodes ISmartArtNode.getOrganizationChartLayout() et setOrganizationChartLayout(int) permettent d’obtenir ou de définir le type de diagramme d’organisation associé au nœud actuel. Afin d’obtenir ou de définir le type de diagramme d’organisation, veuillez suivre les étapes ci-dessous :

Presentation pres = new Presentation();
try {
    // Ajouter SmartArt BasicProcess
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.OrganizationChart);

    // Obtenir ou définir le type de diagramme d'organisation
    smart.getNodes().get_Item(0).setOrganizationChartLayout(OrganizationChartLayoutType.LeftHanging);

    // Enregistrement de la présentation
    pres.save("OrganizeChartLayoutType_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Créer un diagramme d’organisation d’image

Aspose.Slides for Java fournit une API simple pour créer des graphiques PictureOrganization facilement. Pour créer un graphique sur une diapositive :

  1. Créez une instance de la classe Presentation.
  2. Obtenez la référence d’une diapositive par son index.
  3. Ajoutez un graphique avec des données par défaut ainsi que le type souhaité (ChartType.PictureOrganizationChart).
  4. Enregistrez la présentation modifiée au format PPTX.

Le code suivant est utilisé pour créer un graphique.

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

Obtenir ou définir l’état de SmartArt

Afin de modifier le type de mise en page de SmartArt. Veuillez suivre les étapes ci-dessous :

  1. Créez une instance de la classe Presentation.
  2. Ajoutez SmartArt sur la diapositive.
  3. Obtenez ou définissez l’état du diagramme SmartArt.
  4. Enregistrez la présentation au format PPTX.

Le code suivant est utilisé pour créer un graphique.

// Instancier la classe Presentation qui représente le fichier PPTX
Presentation pres = new Presentation();
try {
    // Ajouter SmartArt BasicProcess
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicProcess);
    
    // Obtenir ou définir l'état du diagramme SmartArt
    smart.setReversed(true);
    boolean flag = smart.isReversed();
    
    // Enregistrement de la présentation
    pres.save("output.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

FAQ

SmartArt prend-il en charge le mirroring/inversion pour les langues RTL ?
Oui. La méthode setReversed inverse la direction du diagramme (LTR/RTL) si le type SmartArt sélectionné supporte l’inversion.

Comment puis‑je copier SmartArt sur la même diapositive ou dans une autre présentation tout en conservant le formatage ?
Vous pouvez cloner la forme SmartArt via la collection de formes (ShapeCollection.addClone) ou cloner la diapositive entière contenant cette forme. Les deux approches conservent la taille, la position et le style.

Comment rendre SmartArt en image raster pour l’aperçu ou l’exportation web ?
Rendez la diapositive (ou toute la présentation) en PNG/JPEG via l’API qui convertit les diapositives/présentations en images – SmartArt sera rendu comme partie de la diapositive.

Comment sélectionner programmatiquement un SmartArt spécifique sur une diapositive s’il y en a plusieurs ?
Une pratique courante consiste à utiliser le texte alternatif (Alt Text) ou un nom et à rechercher la forme avec cet attribut dans les formes de la diapositive. Ensuite, vérifiez le type pour confirmer qu’il s’agit d’un SmartArt. La documentation décrit les techniques typiques pour trouver et travailler avec les formes.