Gestire SmartArt nelle presentazioni PowerPoint con PHP
Panoramica
SmartArt è un diagramma PowerPoint composto da nodi, forme dei nodi e un layout. Con Aspose.Slides per PHP via Java, è possibile creare SmartArt, leggere il testo dai suoi nodi, modificare il layout, ispezionare nodi nascosti, configurare layout di organigrammi e creare organigrammi con immagini.
Ottenere il testo da un oggetto SmartArt
Un nodo SmartArt può contenere una o più forme. Per leggere il testo visibile, iterare attraverso SmartArt::getAllNodes, quindi leggere il TextFrame restituito da SmartArtShape::getTextFrame.
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->get_Item(0);
if (java_instanceof($shape, new JavaClass("com.aspose.slides.ISmartArt"))) {
$smartArt = $shape;
foreach ($smartArt->getAllNodes() as $smartArtNode) {
foreach ($smartArtNode->getShapes() as $smartArtShape) {
if (!java_is_null($smartArtShape->getTextFrame())) {
echo($smartArtShape->getTextFrame()->getText());
}
}
}
}
} finally {
$presentation->dispose();
}
Modificare il tipo di layout di un oggetto SmartArt
Il layout SmartArt controlla come i nodi sono disposti e collegati. L’esempio seguente crea un oggetto SmartArt con il valore SmartArtLayoutType BasicBlockList, lo cambia al valore BasicProcess e salva la presentazione.
$presentation = new Presentation();
try {
$smartArt = $presentation->getSlides()->get_Item(0)->getShapes()->addSmartArt(
10, 10, 400, 300, SmartArtLayoutType::BasicBlockList);
$smartArt->setLayout(SmartArtLayoutType::BasicProcess);
$presentation->save("ChangeSmartArtLayout_out.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Verificare se un nodo SmartArt è nascosto
SmartArtNode::isHidden indica se il nodo è nascosto nel modello dati di SmartArt. I nodi nascosti possono esistere nella struttura anche quando il layout selezionato non li visualizza come elementi del diagramma.
L’esempio seguente aggiunge un nodo a un oggetto SmartArt che utilizza il valore SmartArtLayoutType RadialCycle e controlla lo stato di visibilità del nodo.
$presentation = new Presentation();
try {
$smartArt = $presentation->getSlides()->get_Item(0)->getShapes()->addSmartArt(
10, 10, 400, 300, SmartArtLayoutType::RadialCycle);
$smartArtNode = $smartArt->getAllNodes()->addNode();
$isHidden = $smartArtNode->isHidden();
if ($isHidden) {
echo("The node is hidden in the SmartArt data model.");
}
$presentation->save("CheckSmartArtHiddenProperty_out.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Ottenere o impostare il layout dell’organigramma
Per i diagrammi SmartArt che utilizzano un layout di organigramma, SmartArtNode::getOrganizationChartLayout e SmartArtNode::setOrganizationChartLayout definiscono come i nodi figlio sono disposti sotto un nodo genitore. Ad esempio, è possibile impostare i nodi figlio affinché pendano a sinistra, a destra o su entrambi i lati, a seconda del valore di OrganizationChartLayoutType selezionato.
L’esempio seguente crea un organigramma e imposta il layout per il primo nodo al valore OrganizationChartLayoutType LeftHanging.
$presentation = new Presentation();
try {
$smartArt = $presentation->getSlides()->get_Item(0)->getShapes()->addSmartArt(
10, 10, 400, 300, SmartArtLayoutType::OrganizationChart);
$rootNode = $smartArt->getNodes()->get_Item(0);
$rootNode->setOrganizationChartLayout(OrganizationChartLayoutType::LeftHanging);
$presentation->save("OrganizationChartLayout_out.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Creare un organigramma con immagini
Un organigramma con immagini è un layout SmartArt progettato per diagrammi gerarchici che includono segnaposti per immagini. Utilizzare il valore SmartArtLayoutType PictureOrganizationChart quando si aggiunge l’oggetto SmartArt a una diapositiva.
$presentation = new Presentation();
try {
$smartArt = $presentation->getSlides()->get_Item(0)->getShapes()->addSmartArt(
0, 0, 400, 400, SmartArtLayoutType::PictureOrganizationChart);
$presentation->save("PictureOrganizationChart_out.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
FAQ
SmartArt supporta il mirroring o l’inversione per le lingue RTL?
Sì. Il metodo SmartArt::setReversed cambia la direzione del diagramma da sinistra-destra a destra-sinistra, o viceversa, quando il layout SmartArt selezionato supporta l’inversione.
Come copiare SmartArt nella stessa diapositiva o in un’altra presentazione mantenendo la formattazione?
È possibile clonare la forma SmartArt con ShapeCollection::addClone o clonare l’intera diapositiva che contiene lo SmartArt. Entrambi gli approcci conservano dimensione, posizione e formattazione.
Come renderizzare SmartArt in un’immagine raster per anteprima o esportazione web?
Renderizzare la diapositiva o l’intera presentazione in PNG o JPEG. SmartArt viene renderizzato come parte della diapositiva.
Come trovare un oggetto SmartArt specifico su una diapositiva se ce ne sono diversi?
Impostare un valore distintivo per Shape::getAlternativeText o Shape::getName sulla forma SmartArt, cercare tale valore in BaseSlide::getShapes e quindi verificare che la forma corrispondente sia un SmartArt.