จัดการ SmartArt ในงานนำเสนอ PowerPoint โดยใช้ PHP
ภาพรวม
SmartArt คือแผนภาพ PowerPoint ที่ประกอบด้วยโหนด รูปร่างของโหนด และเค้าโครง ด้วย Aspose.Slides for PHP via Java คุณสามารถสร้าง SmartArt อ่านข้อความจากโหนดของมัน เปลี่ยนเค้าโครง ตรวจสอบโหนดที่ซ่อนอยู่ กำหนดค่าเค้าโครงแผนภูมิองค์กร และสร้างแผนภูมิองค์กรแบบภาพ
รับข้อความจากอ็อบเจกต์ SmartArt
โหนด SmartArt สามารถมีหนึ่งหรือหลายรูปทรงได้ เพื่ออ่านข้อความจากรูปทรงของโหนด ให้ทำการวนรอบผ่าน SmartArt::getAllNodes แล้วอ่าน TextFrame ที่ส่งกลับโดย SmartArtShape::getTextFrame
ตัวอย่างนี้ต้องการงานนำเสนอที่มีอย่างน้อยหนึ่งสไลด์และอ็อบเจกต์ SmartArt เป็นรูปทรงแรกบนสไลด์นั้น จะพิมพ์แต่ละ TextFrame ที่มีอยู่ไปยังคอนโซล
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
เค้าโครง SmartArt ควบคุมวิธีการจัดเรียงและเชื่อมต่อโหนด ตัวอย่างต่อไปนี้สร้างอ็อบเจกต์ SmartArt ด้วยค่า SmartArtLayoutType BasicBlockList จากนั้นเปลี่ยนเป็นค่า BasicProcess และบันทึกงานนำเสนอ ตำแหน่งและขนาดที่ส่งให้กับ ShapeCollection::addSmartArt มีหน่วยเป็นพอยท์ ใช้ SmartArt::setLayout เพื่อเปลี่ยนเค้าโครง
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();
}
ตรวจสอบว่าโหนด SmartArt ถูกซ่อนไว้หรือไม่
SmartArtNode::isHidden ระบุว่าโหนดถูกซ่อนไว้ในโมเดลข้อมูลของ SmartArt หรือไม่ โหนดที่ซ่อนอาจยังคงอยู่ในโครงสร้างแม้เค้าโครงที่เลือกจะไม่แสดงเป็นองค์ประกอบที่มองเห็นได้
ตัวอย่างต่อไปนี้เพิ่มโหนดลงในอ็อบเจกต์ SmartArt ที่ใช้ค่า SmartArtLayoutType RadialCycle แล้วตรวจสอบสถานะการซ่อนของโหนดที่เพิ่ม หากโหนดถูกซ่อนจะแสดงข้อความและบันทึกแผนภาพ
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();
}
รับหรือกำหนดเค้าโครงแผนภูมิองค์กร
สำหรับแผนภาพ SmartArt ที่ใช้เค้าโครงแผนภูมิองค์กร SmartArtNode::getOrganizationChartLayout และ SmartArtNode::setOrganizationChartLayout กำหนดวิธีการจัดเรียงโหนดลูกภายใต้โหนดพาเรนท์ ตัวอย่างเช่น คุณสามารถกำหนดให้โหนดลูกห้อยจากด้านซ้าย ด้านขวา หรือทั้งสองด้าน ขึ้นอยู่กับค่า OrganizationChartLayoutType ที่เลือก
ตัวอย่างต่อไปนี้สร้างแผนภูมิองค์กรและกำหนดเค้าโครงให้โหนดแรกเป็นค่า OrganizationChartLayoutType LeftHanging อินดексเริ่มจากศูนย์ 0 เลือกโหนดระดับบนแรก; โหนดลูกของมันจะใช้การจัดเรียงที่เลือก งานนำเสนอที่แก้ไขแล้วจะถูกบันทึก
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();
}
สร้างแผนภูมิองค์กรแบบภาพ
แผนภูมิองค์กรแบบภาพเป็นเค้าโครง SmartArt ที่ออกแบบมาสำหรับแผนผังลำดับชั้นที่มีตัวแทนภาพ ใช้ค่า SmartArtLayoutType PictureOrganizationChart เมื่อต้องการเพิ่มอ็อบเจกต์ SmartArt ลงในสไลด์ ตัวอย่างนี้บันทึกแผนภาพที่มีตัวแทนภาพไว้ แต่ไม่ได้เติมภาพลงในตัวแทนเหล่านั้น
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();
}
แปลงแผนภาพเก่าเป็นกลุ่มของรูปทรง
เมื่อปรับปรุงงานนำเสนอที่มีอยู่ คุณอาจจำเป็นต้องอัปเดตแผนภูมิองค์กรที่สร้างใน PowerPoint 97–2003 Aspose.Slides แทนที่แผนภาพเหล่านี้ด้วยอ็อบเจกต์ LegacyDiagram ใช้ LegacyDiagram::convertToGroupShape เพื่อแปลงแผนภาพเป็นกลุ่มของรูปทรงเพื่อให้สามารถแก้ไขแต่ละองค์ประกอบได้ ดูรายละเอียดเพิ่มเติมใน LegacyDiagram API Reference
การแปลงจะเพิ่มกลุ่มใหม่ลงในคอลเลกชันรูปทรงโดยไม่ลบแผนภาพต้นฉบับ หลังจากแปลงสำเร็จ ให้ลบแผนภาพเดิมด้วย ShapeCollection::remove เพื่อหลีกเลี่ยงเนื้อหาซ้ำ เก็บแผนภาพเก่าไว้ในรายการก่อนการแปลง เพื่อให้การเพิ่มและลบรูปทรงไม่ทำให้การวนรอบขัดจังหวะ
ตัวอย่างต่อไปนี้เปิดงานนำเสนอ ค้นหาทุกสไลด์ แปลงแผนภาพเป็นกลุ่มของรูปทรง และบันทึกงานนำเสนอที่อัปเดตเป็น PPTX
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();
}
งานนำเสนอที่บันทึกแล้วจะมีกลุ่มรูปทรงที่แก้ไขได้แทนแผนภาพเก่าที่แปลงแล้ว โดยไม่มีแผนภาพเดิมเหลืออยู่ เปิดไฟล์ PPTX ใน PowerPoint เพื่อแก้ไของค์ประกอบแต่ละรายการภายในกลุ่ม เช่น ข้อความ การเติมสี หรือตำแหน่ง
คำถามที่พบบ่อย
SmartArt รองรับการสะท้อนหรือการกลับหลังสำหรับภาษาขวามือหรือไม่?
ใช่ เมธอด SmartArt::setReversed จะสลับทิศทางของแผนภาพจากซ้ายไปขวาเป็นขวาไปซ้าย หรือกลับกันเมื่อเค้าโครง SmartArt ที่เลือกสนับสนุนการกลับทิศ
ฉันจะคัดลอก SmartArt ไปยังสไลด์เดียวกันหรือไปยังงานนำเสนออื่นโดยคงรูปแบบไว้ได้อย่างไร?
คุณสามารถ clone the SmartArt shape ด้วย ShapeCollection::addClone หรือ clone the whole slide ที่มี SmartArt ทั้งสองวิธีจะคงขนาด ตำแหน่ง และรูปแบบไว้
ฉันจะเรนเดอร์ SmartArt เป็นภาพ raster เพื่อดูตัวอย่างหรือส่งออกเว็บได้อย่างไร?
Render the slide หรือเรนเดอร์งานนำเสนอทั้งหมดเป็น PNG หรือ JPEG SmartArt จะถูกเรนเดอร์เป็นส่วนหนึ่งของสไลด์
ฉันจะค้นหาอ็อบเจกต์ SmartArt เฉพาะบนสไลด์ได้อย่างไรหากมีหลายอ็อบเจกต์?
ใช้ Shape::setAlternativeText หรือ Shape::setName เพื่อกำหนดข้อความแทนหรือชื่อเฉพาะให้กับรูปทร่าง SmartArt จากนั้นค้นหาค่าดังกล่าวใน BaseSlide::getShapes และตรวจสอบว่ารูปทรงที่ตรงกันเป็น SmartArt