PowerPoint-prezentációk SmartArt kezelése PHP használatával

Áttekintés

SmartArt egy PowerPoint-diagram, amely csomópontokból, csomópont alakzatokból és egy elrendezésből áll. Az Aspose.Slides for PHP via Java segítségével létrehozhat SmartArt-ot, kiolvashatja a szöveget a csomópontjaiból, megváltoztathatja az elrendezését, ellenőrizheti a rejtett csomópontokat, konfigurálhatja a szervezeti diagram elrendezéseket, és létrehozhat képes szervezeti diagramokat.

Szöveg lekérése egy SmartArt objektumból

Egy SmartArt csomópont egy vagy több alakzatot tartalmazhat. A csomópont alakzatok szövegének olvasásához iteráljon a SmartArt::getAllNodes, majd olvassa el a SmartArtShape::getTextFrame által visszaadott TextFrame.

A példához egy olyan prezentáció szükséges, amelynek legalább egy diája van, és a dián az első alakzat egy SmartArt objektum. A program minden elérhető szövegkeretet kiírja a konzolra.

use aspose\slides\Presentation;

$presentation = new Presentation("sample.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);

    $smartArt = $slide->getShapes()->get_Item(0);
    for ($i = 0; $i < java_values($smartArt->getAllNodes()->size()); $i++) {
        $node = $smartArt->getAllNodes()->get_Item($i);
        for ($j = 0; $j < java_values($node->getShapes()->size()); $j++) {
            $nodeShape = $node->getShapes()->get_Item($j);
            if (!java_is_null($nodeShape->getTextFrame())) {
                echo $nodeShape->getTextFrame()->getText() . PHP_EOL;
            }
        }
    }
} finally {
    $presentation->dispose();
}

SmartArt objektum elrendezéstípusának módosítása

A SmartArt elrendezés szabályozza, hogyan vannak elrendezve és összekapcsolva a csomópontok. A következő példa egy SmartArt objektumot hoz létre a SmartArtLayoutType BasicBlockList értékkel, átállítja BasicProcess értékre, és elmenti a prezentációt. A ShapeCollection::addSmartArt‑nak átadott pozíciót és méretet pontban mérik. Az elrendezés módosításához használja a SmartArt::setLayout‑t.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SmartArtLayoutType;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    $smartArt = $slide->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::BasicBlockList);
    $smartArt->setLayout(SmartArtLayoutType::BasicProcess);

    $presentation->save("ChangeSmartArtLayout.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Ellenőrizze, hogy egy SmartArt csomópont rejtett-e

A SmartArtNode::isHidden jelzi, hogy a csomópont rejtett-e a SmartArt adatmodellben. A rejtett csomópontok létezhetnek a struktúrában, még akkor is, ha a kiválasztott elrendezés nem jeleníti meg őket látható diagramelemként.

A következő példa egy csomópontot ad hozzá egy SmartArt objektumhoz, amely a SmartArtLayoutType RadialCycle értéket használ, és ellenőrzi a hozzáadott csomópont rejtett állapotát. Ha a csomópont rejtett, egy üzenetet ír ki, majd elmenti a diagramot.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SmartArtLayoutType;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    $smartArt = $slide->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::RadialCycle);
    $node = $smartArt->getAllNodes()->addNode();
    $isHidden = java_values($node->isHidden());

    if ($isHidden) {
        echo "The node is hidden in the SmartArt data model." . PHP_EOL;
    }

    $presentation->save("CheckSmartArtHiddenProperty.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Szervezeti diagram elrendezés lekérése vagy beállítása

Az olyan SmartArt diagramoknál, amelyek szervezeti diagram elrendezést használnak, a SmartArtNode::getOrganizationChartLayout és a SmartArtNode::setOrganizationChartLayout határozzák meg, hogyan vannak elrendezve a gyermekcsomópontok a szülőcsomópont alatt. Például beállíthatja, hogy a gyermekcsomópontok balról, jobbról vagy mindkét oldalról függjenek, a kiválasztott OrganizationChartLayoutType függvényében.

A következő példa létrehoz egy szervezeti diagramot, és beállítja az első csomópont elrendezését a OrganizationChartLayoutType LeftHanging értékre. A nulláról indított index 0 kiválasztja az első felső szintű csomópontot; annak gyermekcsomópontjai az ekkor kiválasztott elrendezést használják. Ezután a módosított prezentációt elmenti.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SmartArtLayoutType;
use aspose\slides\OrganizationChartLayoutType;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    $smartArt = $slide->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::OrganizationChart);
    $rootNode = $smartArt->getNodes()->get_Item(0);
    $rootNode->setOrganizationChartLayout(OrganizationChartLayoutType::LeftHanging);

    $presentation->save("OrganizationChartLayout.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Képes szervezeti diagram létrehozása

A képes szervezeti diagram egy olyan SmartArt elrendezés, amely hierarchikus diagramokhoz készült, és képhelyeket tartalmaz. A SmartArtLayoutType PictureOrganizationChart értéket használja, amikor a SmartArt objektumot egy diára adja. Ez a példa egy diagramot ment el képhelyekkel; a helyek nincsenek képekkel feltöltve.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SmartArtLayoutType;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    $smartArt = $slide->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::PictureOrganizationChart);

    $presentation->save("PictureOrganizationChart.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Régi diagramok alakzatcsoportokká konvertálása

Egy meglévő prezentáció modernizálásakor előfordulhat, hogy frissíteni kell egy eredetileg PowerPoint 97–2003-ban készült szervezeti diagramot. Az Aspose.Slides ezeket a régi diagramokat LegacyDiagram objektumokként jeleníti meg. Használja a LegacyDiagram::convertToGroupShape‑t, hogy egy diagramot alakzatcsoporttá konvertáljon, így szerkesztheti az egyedi vizuális elemeket. A részletekért tekintse meg a LegacyDiagram API Reference dokumentációt.

A konvertálás egy új csoportot ad az alakzatgyűjteményhez az eredeti diagram eltávolítása nélkül. Sikeres konvertálás után távolítsa el az eredetit a ShapeCollection::remove használatával, hogy elkerülje a duplikált tartalmat. A konvertálás előtt gyűjtse össze a régi diagramokat egy listába, hogy az alakzatok hozzáadása és eltávolítása ne szakítsa meg az iterációt.

A következő példa megnyit egy prezentációt, minden diát keres, a diagramokat alakzatcsoportokká konvertálja, és elmenti a frissített prezentációt PPTX formátumban.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("legacy-diagrams.ppt");
try {
    $legacyDiagramType = new JavaClass("com.aspose.slides.ILegacyDiagram");
    for ($i = 0; $i < java_values($presentation->getSlides()->size()); $i++) {
        $slide = $presentation->getSlides()->get_Item($i);
        $legacyDiagrams = [];
        for ($j = 0; $j < java_values($slide->getShapes()->size()); $j++) {
            $shape = $slide->getShapes()->get_Item($j);
            if (java_instanceof($shape, $legacyDiagramType)) {
                $legacyDiagrams[] = $shape;
            }
        }

        foreach ($legacyDiagrams as $legacyDiagram) {
            $groupShape = $legacyDiagram->convertToGroupShape();

            if (!java_is_null($groupShape)) {
                $slide->getShapes()->remove($legacyDiagram);
            }
        }
    }

    $presentation->save("modernized.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Az elmentett prezentáció szerkeszthető alakzatcsoportokat tartalmaz a konvertált régi diagramok helyett, az eredeti diagramok már nem szerepelnek. Nyissa meg a PPTX-et a PowerPointban, hogy szerkessze az egyes csoportok elemeit, például a szöveget, kitöltést vagy pozíciót.

GYIK

Támogatja a SmartArt a tükrözést vagy fordítást RTL nyelvekhez?

Igen. A SmartArt::setReversed metódus megfordítja a diagram irányát balról jobbra és vissza, ha a kiválasztott SmartArt elrendezés támogatja a fordítást.

Hogyan másolhatom a SmartArt-ot ugyanarra a diára vagy egy másik prezentációba, miközben megőrzöm a formázást?

Klónozhatja a SmartArt alakzatot a ShapeCollection::addClone segítségével, vagy klónozhatja az egész diát , amely a SmartArt-ot tartalmazza. Mindkét megközelítés megőrzi a méretet, a pozíciót és a formázást.

Hogyan renderelhetem a SmartArt-ot raszteres képre előnézethez vagy webes exporthoz?

A diát renderelni vagy az egész prezentációt PNG vagy JPEG formátumba. A SmartArt a dián belül renderelődik.

Hogyan találhatok meg egy konkrét SmartArt objektumot egy dián, ha több is van?

Használja a Shape::setAlternativeText vagy a Shape::setName metódust, hogy egy megkülönböztető alternatív szöveget vagy nevet adjon a SmartArt alakzatnak, keresse meg ezt az értéket a BaseSlide::getShapes‑ben, majd ellenőrizze, hogy a megtalált alakzat egy SmartArt‑e.