Správa SmartArt v prezentacích PowerPoint pomocí PHP
Přehled
SmartArt je diagram PowerPointu složený z uzlů, tvarů uzlů a rozvržení. S Aspose.Slides pro PHP přes Java můžete vytvářet SmartArt, číst text z jeho uzlů, měnit jeho rozvržení, kontrolovat skryté uzly, konfigurovat rozvržení organizačních diagramů a vytvářet obrázkové organizační diagramy.
Získání textu ze SmartArt objektu
Uzlu SmartArt může obsahovat jeden nebo více tvarů. Pro načtení viditelného textu iterujte přes SmartArt::getAllNodes, poté přečtěte TextFrame vrácený metodou 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();
}
Změna typu rozvržení SmartArt objektu
Rozvržení SmartArt určuje, jak jsou uzly uspořádány a propojeny. Následující příklad vytváří SmartArt objekt s hodnotou SmartArtLayoutType BasicBlockList, mění jej na hodnotu BasicProcess a ukládá prezentaci.
$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();
}
Kontrola, zda je uzel SmartArt skrytý
SmartArtNode::isHidden ukazuje, zda je uzel skrytý v datovém modelu SmartArt. Skryté uzly mohou existovat ve struktuře, i když vybrané rozvržení nezobrazuje je jako viditelné diagramové prvky.
Následující příklad přidá uzel do SmartArt objektu, který používá hodnotu SmartArtLayoutType RadialCycle, a kontroluje stav skrytí uzlu.
$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();
}
Získání nebo nastavení rozvržení organizačního diagramu
Pro diagramy SmartArt, které používají rozvržení organizačního diagramu, SmartArtNode::getOrganizationChartLayout a SmartArtNode::setOrganizationChartLayout určují, jak jsou podřízené uzly uspořádány pod nadřazeným uzlem. Například můžete nastavit podřízené uzly, aby visely zleva, zprava nebo z obou stran, v závislosti na vybraném OrganizationChartLayoutType.
Následující příklad vytvoří organizační diagram a nastaví rozvržení pro první uzel na hodnotu 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();
}
Vytvoření obrázkového organizačního diagramu
Obrázkový organizační diagram je rozvržení SmartArt určené pro hierarchické diagramy, které obsahují zástupce obrázků. Použijte hodnotu SmartArtLayoutType PictureOrganizationChart při přidávání SmartArt objektu na snímek.
$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
Podporuje SmartArt zrcadlení nebo obracení pro RTL jazyky?
Ano. Metoda SmartArt::setReversed přepíná směr diagramu z left-to-right na right-to-left nebo zpět, pokud vybrané rozvržení SmartArt podporuje obrácení.
Jak mohu zkopírovat SmartArt na stejný snímek nebo do jiné prezentace při zachování formátování?
Můžete klonovat tvar SmartArt pomocí ShapeCollection::addClone nebo klonovat celý snímek který SmartArt obsahuje. Oba přístupy zachovávají velikost, umístění a formátování.
Jak vykreslím SmartArt do rastrového obrázku pro náhled nebo webový export?
Vykreslete snímek nebo celou prezentaci do PNG nebo JPEG. SmartArt je vykreslen jako součást snímku.
Jak mohu najít konkrétní SmartArt objekt na snímku, pokud jich je několik?
Nastavte jedinečnou hodnotu Shape::getAlternativeText nebo Shape::getName na tvar SmartArt, vyhledejte tuto hodnotu v BaseSlide::getShapes, a poté ověřte, že odpovídající tvar je SmartArt.