จัดการ SmartArt ในการนำเสนอ PowerPoint ด้วย JavaScript

ภาพรวม

SmartArt คือแผนภาพ PowerPoint ที่สร้างจากโหนด รูปร่างของโหนด และเคาน์เตอร์จัดวาง (layout). ด้วย Aspose.Slides สำหรับ Node.js ผ่าน Java คุณสามารถสร้าง SmartArt, อ่านข้อความจากโหนดของมัน, เปลี่ยนเคาน์เตอร์จัดวาง, ตรวจสอบโหนดที่ซ่อนอยู่, กำหนดค่าการจัดวางแผนผังองค์กร, และสร้างแผนผังองค์กรแบบรูปภาพได้.

ดึงข้อความจากอ็อบเจกต์ SmartArt

โหนด SmartArt สามารถมีรูปร่างหนึ่งหรือหลายรูปได้ เพื่ออ่านข้อความที่มองเห็น ให้วนลูปผ่าน SmartArt.getAllNodes แล้วอ่าน TextFrame ที่คืนค่าจาก SmartArtShape.getTextFrame.

let presentation = new aspose.slides.Presentation("sample.pptx");
try {
    let slide = presentation.getSlides().get_Item(0);
    let shape = slide.getShapes().get_Item(0);

    if (java.instanceOf(shape, "com.aspose.slides.ISmartArt")) {
        let smartArt = shape;
        let nodes = smartArt.getAllNodes();

        for (let nodeIndex = 0; nodeIndex < nodes.size(); nodeIndex++) {
            let node = nodes.get_Item(nodeIndex);
            let nodeShapes = node.getShapes();

            for (let shapeIndex = 0; shapeIndex < nodeShapes.size(); shapeIndex++) {
                let nodeShape = nodeShapes.get_Item(shapeIndex);

                if (nodeShape.getTextFrame() != null) {
                    console.log(nodeShape.getTextFrame().getText());
                }
            }
        }
    }
} finally {
    presentation.dispose();
}

เปลี่ยนประเภทการจัดวางของอ็อบเจกต์ SmartArt

เคาน์เตอร์จัดวาง SmartArt ควบคุมการจัดเรียงและการเชื่อมต่อของโหนด ตัวอย่างต่อไปนี้สร้างอ็อบเจกต์ SmartArt ด้วยค่า SmartArtLayoutType BasicBlockList แล้วเปลี่ยนเป็นค่า BasicProcess และบันทึกการนำเสนอ.

let presentation = new aspose.slides.Presentation();
try {
    let smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
        10, 10, 400, 300, aspose.slides.SmartArtLayoutType.BasicBlockList);

    smartArt.setLayout(aspose.slides.SmartArtLayoutType.BasicProcess);

    presentation.save("ChangeSmartArtLayout_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

ตรวจสอบว่าโหนด SmartArt ถูกซ่อนหรือไม่

SmartArtNode.isHidden ระบุว่าโหนดถูกซ่อนในโมเดลข้อมูล SmartArt หรือไม่ โหนดที่ซ่อนอยู่สามารถอยู่ในโครงสร้างได้แม้ว่าเคาน์เตอร์จัดวางที่เลือกจะไม่ได้แสดงเป็นองค์ประกอบแผนภาพที่มองเห็นได้.

ตัวอย่างต่อไปนี้เพิ่มโหนดเข้าไปในอ็อบเจกต์ SmartArt ที่ใช้ค่า SmartArtLayoutType RadialCycle และตรวจสอบสถานะการซ่อนของโหนด.

let presentation = new aspose.slides.Presentation();
try {
    let smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
        10, 10, 400, 300, aspose.slides.SmartArtLayoutType.RadialCycle);

    let node = smartArt.getAllNodes().addNode();
    let isHidden = node.isHidden();

    if (isHidden) {
        console.log("The node is hidden in the SmartArt data model.");
    }

    presentation.save("CheckSmartArtHiddenProperty_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

รับหรือกำหนดการจัดวางแผนผังองค์กร

สำหรับแผนภาพ SmartArt ที่ใช้การจัดวางแผนผังองค์กร, SmartArtNode.getOrganizationChartLayout และ SmartArtNode.setOrganizationChartLayout กำหนดวิธีการจัดเรียงโหนดลูกภายใต้โหนดพาเรนท์ ตัวอย่างเช่น คุณสามารถตั้งค่าให้โหนดลูกห้อยจากด้านซ้าย, ด้านขวา หรือทั้งสองด้าน ขึ้นอยู่กับ OrganizationChartLayoutType.

ตัวอย่างต่อไปนี้สร้างแผนผังองค์กรและตั้งค่าการจัดวางสำหรับโหนดแรกเป็นค่า OrganizationChartLayoutType LeftHanging.

let presentation = new aspose.slides.Presentation();
try {
    let smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
        10, 10, 400, 300, aspose.slides.SmartArtLayoutType.OrganizationChart);

    let rootNode = smartArt.getNodes().get_Item(0);
    rootNode.setOrganizationChartLayout(aspose.slides.OrganizationChartLayoutType.LeftHanging);

    presentation.save("OrganizationChartLayout_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

สร้างแผนผังองค์กรแบบภาพ

แผนผังองค์กรแบบภาพเป็นการจัดวาง SmartArt ที่ออกแบบมาสำหรับแผนผังลำดับชั้นที่มีตัวเก็บภาพ ใช้ค่า SmartArtLayoutType PictureOrganizationChart เมื่อเพิ่มอ็อบเจกต์ SmartArt ลงในสไลด์.

let presentation = new aspose.slides.Presentation();
try {
    let smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
        0, 0, 400, 400, aspose.slides.SmartArtLayoutType.PictureOrganizationChart);

    presentation.save("PictureOrganizationChart_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

คำถามที่พบบ่อย

SmartArt รองรับการสะท้อนหรือการกลับด้านสำหรับภาษาขวามาซ้าย (RTL) หรือไม่?

ใช่ เมธอด SmartArt.setReversed จะสลับทิศทางของแผนภาพจากซ้ายไปขวาเป็นขวาไปซ้าย หรือกลับกัน เมื่อการจัดวาง SmartArt ที่เลือกรองรับการกลับด้าน.

ฉันจะคัดลอก SmartArt ไปยังสไลด์เดียวกันหรือไปยังการนำเสนออื่นโดยคงรูปแบบไว้ได้อย่างไร?

คุณสามารถ คัดลอกรูปร่าง SmartArt ด้วย ShapeCollection.addClone หรือ คัดลอกสไลด์ทั้งหมด ที่มี SmartArt ทั้งหมด วิธีทั้งสองจะคงขนาด, ตำแหน่ง, และรูปแบบไว้.

วิธีเรนเดอร์ SmartArt เป็นภาพราสเตอร์เพื่อการพรีวิวหรือส่งออกเว็บทำอย่างไร?

คุณสามารถ เรนเดอร์สไลด์ หรือการนำเสนอทั้งหมดเป็น PNG หรือ JPEG SmartArt จะถูกเรนเดอร์เป็นส่วนหนึ่งของสไลด์.

ฉันจะหารูป SmartArt เฉพาะบนสไลด์ได้อย่างไรหากมีหลายอ็อบเจกต์?

กำหนดค่า Shape.setAlternativeText หรือ Shape.setName ที่แตกต่างบนรูปร่าง SmartArt, แล้วค้นหาค่าดังกล่าวใน BaseSlide.getShapes, จากนั้นตรวจสอบว่ารูปร่างที่ตรงกันเป็น SmartArt.