จัดการ SmartArt ในงานนำเสนอ PowerPoint บน Android
ภาพรวม
SmartArt คือแผนภาพ PowerPoint ที่สร้างจากโหนด, รูปร่างของโหนด, และการจัดวาง. ด้วย Aspose.Slides for Android via Java, คุณสามารถสร้าง SmartArt, อ่านข้อความจากโหนดของมัน, เปลี่ยนการจัดวาง, ตรวจสอบโหนดที่ซ่อน, กำหนดค่าการจัดวางแผนผังองค์กร, และสร้างแผนผังองค์กรแบบภาพได้.
รับข้อความจากวัตถุ SmartArt
โหนด SmartArt สามารถมีหนึ่งหรือหลายรูปทรงได้. เพื่้ออ่านข้อความจากรูปทรงของโหนด, ให้วนผ่าน ISmartArt.getAllNodes, จากนั้นอ่าน ITextFrame ที่คืนค่าโดย ISmartArtShape.getTextFrame.
ตัวอย่างนี้ต้องการงานนำเสนอที่มีอย่างน้อยหนึ่งสไลด์และวัตถุ SmartArt เป็นรูปทรงแรกบนสไลด์นั้น. มันพิมพ์แต่ละเฟรมข้อความที่มีให้บนคอนโซล.
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = (ISmartArt) slide.getShapes().get_Item(0);
for (ISmartArtNode node : smartArt.getAllNodes()) {
for (ISmartArtShape nodeShape : node.getShapes()) {
if (nodeShape.getTextFrame() != null) {
System.out.println(nodeShape.getTextFrame().getText());
}
}
}
} finally {
presentation.dispose();
}
เปลี่ยนประเภทการจัดวางของวัตถุ SmartArt
การจัดวาง SmartArt ควบคุมวิธีการจัดเรียงและเชื่อมต่อโหนด. ตัวอย่างต่อไปนี้สร้างวัตถุ SmartArt ด้วยค่า SmartArtLayoutType BasicBlockList, แล้วเปลี่ยนเป็นค่า BasicProcess, และบันทึกงานนำเสนอ. ตำแหน่งและขนาดที่ส่งให้ IShapeCollection.addSmartArt จะวัดเป็นจุด. ใช้ ISmartArt.setLayout เพื่อเปลี่ยนการจัดวาง.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicBlockList);
smartArt.setLayout(SmartArtLayoutType.BasicProcess);
presentation.save("ChangeSmartArtLayout.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
ตรวจสอบว่าโหนด SmartArt ถูกซ่อนหรือไม่
ISmartArtNode.isHidden ระบุว่าโหนดถูกซ่อนในโมเดลข้อมูลของ SmartArt หรือไม่. โหนดที่ซ่อนอยู่สามารถอยู่ในโครงสร้างได้แม้การจัดวางที่เลือกจะไม่ได้แสดงเป็นองค์ประกอบแผนภาพที่มองเห็น.
ตัวอย่างต่อไปนี้เพิ่มโหนดลงในวัตถุ SmartArt ที่ใช้ค่า SmartArtLayoutType RadialCycle และตรวจสอบสถานะการซ่อนของโหนดที่เพิ่ม. มันพิมพ์ข้อความหากโหนดถูกซ่อนและบันทึกแผนภาพ.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.RadialCycle);
ISmartArtNode node = smartArt.getAllNodes().addNode();
boolean isHidden = node.isHidden();
if (isHidden) {
System.out.println("The node is hidden in the SmartArt data model.");
}
presentation.save("CheckSmartArtHiddenProperty.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
รับหรือกำหนดการจัดวางแผนผังองค์กร
สำหรับแผนภาพ SmartArt ที่ใช้การจัดวางแผนผังองค์กร, ISmartArtNode.getOrganizationChartLayout และ ISmartArtNode.setOrganizationChartLayout กำหนดวิธีการจัดเรียงโหนดลูกภายใต้โหนดหลัก. ตัวอย่างเช่น, คุณสามารถตั้งค่าให้โหนดลูกห้อยจากด้านซ้าย, ด้านขวา, หรือทั้งสองด้าน, ขึ้นอยู่กับ OrganizationChartLayoutType ที่เลือก.
ตัวอย่างต่อไปนี้สร้างแผนผังองค์กรและกำหนดการจัดวางสำหรับโหนดแรกให้เป็นค่า OrganizationChartLayoutType LeftHanging. ดัชนีศูนย์ฐาน 0 เลือกโหนดระดับบนแรก; โหนดลูกของมันจะใช้การจัดเรียงที่เลือก. งานนำเสนอที่แก้ไขแล้วจึงถูกบันทึก.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.OrganizationChart);
ISmartArtNode rootNode = smartArt.getNodes().get_Item(0);
rootNode.setOrganizationChartLayout(OrganizationChartLayoutType.LeftHanging);
presentation.save("OrganizationChartLayout.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
สร้างแผนผังองค์กรแบบภาพ
แผนผังองค์กรแบบภาพเป็นการจัดวาง SmartArt ที่ออกแบบมาสำหรับแผนภาพลำดับชั้นที่มีตำแหน่งภาพ. ใช้ค่า SmartArtLayoutType PictureOrganizationChart เมื่อเพิ่มวัตถุ SmartArt ไปยังสไลด์. ตัวอย่างนี้บันทึกแผนภาพที่มีตำแหน่งภาพ; แต่ไม่ได้ใส่ภาพลงในตำแหน่งเหล่านั้น.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.PictureOrganizationChart);
presentation.save("PictureOrganizationChart.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
แปลงแผนภาพรุ่นเก่าเป็นกลุ่มของรูปทรง
เมื่อทำการอัปเดตงานนำเสนอที่มีอยู่, คุณอาจต้องปรับแผนผังองค์กรที่สร้างขึ้นใน PowerPoint 97–2003. Aspose.Slides แสดงแผนภาพรุ่นเก่าเหล่านี้เป็นอ็อบเจ็กต์ ILegacyDiagram. ใช้ LegacyDiagram.convertToGroupShape เพื่อแปลงแผนภาพเป็นกลุ่มของรูปทรง เพื่อให้คุณสามารถแก้ไของค์ประกอบภาพแต่ละส่วนได้. ดู LegacyDiagram API Reference เพื่อดูรายละเอียด.
การแปลงจะเพิ่มกลุ่มใหม่เข้าไปในคอลเลกชันรูปทรงโดยไม่ลบแผนภาพเดิม. หลังจากการแปลงสำเร็จ, ให้ลบแผนภาพเดิมด้วย IShapeCollection.remove เพื่อหลีกเลี่ยงเนื้อหาซ้ำซ้อน. รวบรวมแผนภาพรุ่นเก่าไว้ในรายการก่อนแปลงเพื่อให้การเพิ่มและลบรูปทรงไม่ทำให้การวนลูปสะดุด.
ตัวอย่างต่อไปนี้เปิดงานนำเสนอ, ค้นหาทุกสไลด์, แปลงแผนภาพเป็นกลุ่มของรูปทรง, และบันทึกงานนำเสนอที่อัปเดตเป็น PPTX.
import com.aspose.slides.*;
import java.util.ArrayList;
import java.util.List;
Presentation presentation = new Presentation("legacy-diagrams.ppt");
try {
for (ISlide slide : presentation.getSlides()) {
List<ILegacyDiagram> legacyDiagrams = new ArrayList<>();
for (IShape shape : slide.getShapes()) {
if (shape instanceof ILegacyDiagram) {
legacyDiagrams.add((ILegacyDiagram) shape);
}
}
for (ILegacyDiagram legacyDiagram : legacyDiagrams) {
IGroupShape groupShape = legacyDiagram.convertToGroupShape();
if (groupShape != null) {
slide.getShapes().remove(legacyDiagram);
}
}
}
presentation.save("modernized.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
งานนำเสนอที่บันทึกไว้จะมีกลุ่มรูปทรงที่แก้ไขได้แทนที่แผนภาพรุ่นเก่าที่ถูกแปลง, โดยไม่มีแผนภาพเดิมเหลืออยู่ข้างเคียง. เปิดไฟล์ PPTX ใน PowerPoint เพื่อแก้ไของค์ประกอบแต่ละส่วนภายในแต่ละกลุ่ม, เช่น ข้อความ, การเติมสี หรือ ตำแหน่ง.
คำถามที่พบบ่อย
SmartArt รองรับการสะท้อนหรือกลับด้านสำหรับภาษาที่อ่านจากขวาไปซ้ายหรือไม่?
ใช่. เมธอด ISmartArt.setReversed จะเปลี่ยนทิศทางของแผนภาพจากซ้ายไปขวาเป็นขวาไปซ้าย, หรือกลับกัน, เมื่อการจัดวาง SmartArt ที่เลือกสนับสนุนการย้อนกลับ.
ฉันจะคัดลอก SmartArt ไปยังสไลด์เดียวกันหรือไปยังงานนำเสนออื่นโดยคงรูปแบบไว้ได้อย่างไร?
คุณสามารถ คัดลอกรูปทรง SmartArt ด้วย ShapeCollection.addClone หรือ คัดลอกสไลด์ทั้งหมด ที่มี SmartArt อยู่. ทั้งสองวิธีจะคงขนาด, ตำแหน่ง, และรูปแบบ.
ฉันจะเรนเดอร์ SmartArt เป็นภาพแรสเตอร์เพื่อการแสดงตัวอย่างหรือส่งออกเว็บได้อย่างไร?
แปลงสไลด์ หรือทั้งงานนำเสนอเป็น PNG หรือ JPEG. SmartArt จะถูกแปลงเป็นส่วนหนึ่งของสไลด์.
ฉันจะหาวัตถุ SmartArt เฉพาะบนสไลด์ได้อย่างไรหากมีหลายอัน?
ใช้ Shape.setAlternativeText หรือ Shape.setName เพื่อกำหนดข้อความแทนหรือชื่อที่แตกต่างให้กับรูปทรง SmartArt, ค้นหาค่าดังกล่าวใน BaseSlide.getShapes แล้วตรวจสอบว่ารูปทรงที่ตรงกันเป็น ISmartArt.