Hantera SmartArt i PowerPoint-presentationer med PHP

Översikt

SmartArt är ett PowerPoint-diagram som består av noder, nodformer och en layout. Med Aspose.Slides för PHP via Java kan du skapa SmartArt, läsa text från dess noder, ändra dess layout, undersöka dolda noder, konfigurera organisationsdiagramlayoutar och skapa bildorganisationsdiagram.

Hämta text från ett SmartArt-objekt

En SmartArt-nod kan innehålla en eller flera former. För att läsa den synliga texten, iterera genom SmartArt::getAllNodes, och läs sedan TextFrame som returneras av 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();
}

Ändra layouttyp för ett SmartArt-objekt

SmartArt-layouten styr hur noder ordnas och kopplas ihop. Följande exempel skapar ett SmartArt-objekt med SmartArtLayoutType BasicBlockList-värdet, byter det till BasicProcess-värdet och sparar presentationen.

$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();
}

Kontrollera om en SmartArt-nod är dold

SmartArtNode::isHidden visar om noden är dold i SmartArt-datamodellen. Dolda noder kan finnas i strukturen även när den valda layouten inte visar dem som synliga diagramelement.

Följande exempel lägger till en nod i ett SmartArt-objekt som använder SmartArtLayoutType RadialCycle-värdet och kontrollerar nodens dolda tillstånd.

$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();
}

Hämta eller ange organisationsdiagramlayout

För SmartArt-diagram som använder en organisationsdiagramlayout definierar SmartArtNode::getOrganizationChartLayout och SmartArtNode::setOrganizationChartLayout hur undernoder placeras under en föräldranod. Till exempel kan du ange att undernoder hänger från vänster, höger eller båda sidor, beroende på den valda OrganizationChartLayoutType.

Följande exempel skapar ett organisationsdiagram och anger layouten för den första noden till OrganizationChartLayoutType LeftHanging-värdet.

$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();
}

Skapa ett bildorganisationsdiagram

Ett bildorganisationsdiagram är en SmartArt-layout avsedd för hierarkidiagram som innehåller bildplatshållare. Använd SmartArtLayoutType PictureOrganizationChart-värdet när du lägger till SmartArt-objektet på en bild.

$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

Stöder SmartArt spegling eller omvändning för RTL-språk?

Ja. Metoden SmartArt::setReversed växlar diagramriktningen från vänster-till-höger till höger-till-vänster, eller tillbaka, när den valda SmartArt-layouten stödjer omvändning.

Hur kan jag kopiera SmartArt till samma bild eller till en annan presentation samtidigt som formateringen bevaras?

Du kan klona SmartArt-formen med ShapeCollection::addClone eller klona hela bilden som innehåller SmartArt. Båda tillvägagångssätten bevarar storlek, position och formatering.

Hur renderar jag SmartArt till en rasterbild för förhandsgranskning eller webexport?

Rendera bilden eller hela presentationen till PNG eller JPEG. SmartArt renderas som en del av bilden.

Hur kan jag hitta ett specifikt SmartArt-objekt på en bild om det finns flera?

Ange ett tydligt Shape::getAlternativeText eller Shape::getName värde på SmartArt-formen, sök efter det värdet i BaseSlide::getShapes, och kontrollera sedan att den matchande formen är en SmartArt.