Gérer SmartArt dans les présentations PowerPoint avec PHP
Obtenir le texte d’un objet SmartArt
Maintenant la méthode TextFrame a été ajoutée à la classe SmartArtShape respectivement. Cette propriété vous permet d’obtenir tout le texte de SmartArt même s’il ne contient pas uniquement le texte des nœuds. Le code d’exemple suivant vous aidera à récupérer le texte d’un nœud 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();
}
}
Modifier le type de disposition d’un objet SmartArt
Afin de modifier le type de disposition 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 un SmartArt BasicBlockList.
- Modifiez le LayoutType en BasicProcess.
- Enregistrez la présentation au format PPTX.
Dans l’exemple ci‑dessous, nous avons ajouté un connecteur entre deux formes.
$pres = new Presentation();
try {
# Ajouter SmartArt BasicProcess
$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 (!java_is_null($pres)) {
$pres->dispose();
}
}
Vérifier la propriété Hidden d’un objet SmartArt
Veuillez noter : la méthode SmartArtNode::isHidden() renvoie true si ce nœud est masqué dans le modèle de données. Afin de vérifier la propriété hidden de n’importe quel nœud de SmartArt. Veuillez suivre les étapes ci‑dessous :
- Créez une instance de la classe Presentation.
- Ajoutez un 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.
$pres = new Presentation();
try {
# Ajouter SmartArt BasicProcess
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::RadialCycle);
# Ajouter un nœud sur SmartArt
$node = $smart->getAllNodes()->addNode();
# Vérifier la propriété isHidden
$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 (!java_is_null($pres)) {
$pres->dispose();
}
}
Obtenir ou définir le type de diagramme d’organisation
Les méthodes SmartArtNode::getOrganizationChartLayout() et SmartArtNode::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 :
- Créez une instance de la classe Presentation.
- Ajoutez un SmartArt sur la diapositive.
- Obtenez ou définissez le type de diagramme d’organisation.
- Enregistrez la présentation au format PPTX.
Dans l’exemple ci‑dessous, nous avons ajouté un connecteur entre deux formes.
$pres = new Presentation();
try {
# Ajouter SmartArt BasicProcess
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::OrganizationChart);
# Obtenir ou définir le type d'organigramme
$smart->getNodes()->get_Item(0)->setOrganizationChartLayout(OrganizationChartLayoutType::LeftHanging);
# Enregistrement de la présentation
$pres->save("OrganizeChartLayoutType_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Créer un diagramme PictureOrganization
Aspose.Slides for PHP via Java fournit une API simple pour créer des diagrammes PictureOrganization facilement. Pour créer un diagramme sur une diapositive :
- Créez une instance de la classe Presentation.
- Obtenez la référence d’une diapositive par son index.
- Ajoutez un diagramme avec les données par défaut ainsi que le type souhaité (ChartType::PictureOrganizationChart).
- Enregistrez la présentation modifiée au format PPTX
Le code suivant est utilisé pour créer un diagramme.
$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();
}
}
Obtenir ou définir l’état du SmartArt
Afin de modifier le type de disposition de SmartArt. Veuillez suivre les étapes ci‑dessous :
- Créez une instance de la classe Presentation.
- Ajoutez un SmartArt sur la diapositive.
- Get ou Set l’état du diagramme SmartArt.
- Enregistrez la présentation au format PPTX.
Le code suivant est utilisé pour créer un diagramme.
# Instancier la classe Presentation qui représente le fichier PPTX
$pres = new Presentation();
try {
# Ajouter SmartArt BasicProcess
$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);
$flag = $smart->isReversed();
# Enregistrement de la présentation
$pres->save("output.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
Le SmartArt prend‑il en charge le miroir/l’inversion pour les langues RTL ?
Oui. La méthode setReversed bascule la direction du diagramme (LTR/RTL) si le type SmartArt sélectionné prend en charge l’inversion.
Comment puis‑je copier le 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 le SmartArt en image raster pour un aperçu ou une exportation web ?
Rendez la diapositive (ou l’ensemble de la présentation) en PNG/JPEG via l’API qui convertit les diapositives/présentations en images — le SmartArt sera dessiné 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 par cet attribut dans les formes de la diapositive, puis à vérifier le type pour confirmer qu’il s’agit d’un SmartArt. La documentation décrit les techniques typiques pour trouver et manipuler les formes.