Kelola Node Bentuk SmartArt dalam Presentasi Menggunakan Java
Gambaran Umum
Grafik SmartArt dalam presentasi PowerPoint diatur melalui node yang berisi teks dan menentukan struktur diagram. Aspose.Slides memungkinkan Anda bekerja dengan node SmartArt ini secara programatis: menambahkan node dan node anak baru, menyisipkan node anak pada posisi tertentu, mengakses node yang ada, dan membaca teks, level, serta posisi mereka.
Artikel ini menjelaskan cara mengelola node bentuk SmartArt. Artikel ini menunjukkan cara menghapus node, bekerja dengan node anak berdasarkan indeks atau posisi, mengubah node asisten menjadi node normal, menyesuaikan posisi, ukuran, dan rotasi bentuk node SmartArt, mengatur format isi node, serta menghasilkan gambar thumbnail untuk node anak SmartArt.
Menambahkan Node SmartArt
Aspose.Slides for Java telah menyediakan API paling sederhana untuk mengelola bentuk SmartArt dengan cara termudah. Kode contoh berikut akan membantu menambahkan node dan node anak di dalam bentuk SmartArt.
- Buat sebuah instance dari kelas Presentation dan muat presentasi dengan bentuk SmartArt.
- Dapatkan referensi slide pertama dengan menggunakan indeksnya.
- Iterasi setiap bentuk di dalam slide pertama.
- Periksa apakah bentuk bertipe SmartArt dan lakukan typecast pada bentuk yang dipilih menjadi SmartArt bila memang SmartArt.
- Tambahkan Node baru ke dalam bentuk SmartArt NodeCollection dan atur teksnya di TextFrame.
- Sekarang, Tambahkan sebuah Child Node ke dalam Node SmartArt yang baru ditambahkan dan atur teksnya di TextFrame.
- Simpan Presentasi.
// Muat presentasi yang diinginkan
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
// Iterasi setiap bentuk di dalam slide pertama
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// Periksa apakah bentuk bertipe SmartArt
if (shape instanceof SmartArt)
{
// Lakukan typecast bentuk ke SmartArt
SmartArt smart = (SmartArt) shape;
// Menambahkan Node SmartArt baru
SmartArtNode TemNode = (SmartArtNode) smart.getAllNodes().addNode();
// Menambahkan teks
TemNode.getTextFrame().setText("Test");
// Menambahkan node anak baru pada node induk. Node ini akan ditambahkan di akhir koleksi
SmartArtNode newNode = (SmartArtNode) TemNode.getChildNodes().addNode();
// Menambahkan teks
newNode.getTextFrame().setText("New Node Added");
}
}
// Menyimpan Presentasi
pres.save("AddSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Menambahkan Node SmartArt pada Posisi Tertentu
Dalam kode contoh berikut kami menjelaskan cara menambahkan node anak yang termasuk dalam masing‑masing node bentuk SmartArt pada posisi tertentu.
- Buat sebuah instance dari kelas Presentation.
- Dapatkan referensi slide pertama dengan menggunakan indeksnya.
- Tambahkan bentuk SmartArt bertipe StackedList pada slide yang diakses.
- Akses node pertama dalam bentuk SmartArt yang ditambahkan.
- Sekarang, tambahkan Child Node untuk Node yang dipilih pada posisi 2 dan atur teksnya.
- Simpan Presentasi.
// Membuat instance presentasi
Presentation pres = new Presentation();
try {
// Mengakses slide presentasi
ISlide slide = pres.getSlides().get_Item(0);
// Menambahkan IShape Smart Art
ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
// Mengakses node SmartArt pada indeks 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
// Menambahkan node anak baru pada posisi 2 di node induk
SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).addNodeByPosition(2);
// Menambahkan Teks
chNode.getTextFrame().setText("Sample Text Added");
// Menyimpan Presentasi
pres.save("AddSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Mengakses Node SmartArt
Kode contoh berikut akan membantu mengakses node di dalam bentuk SmartArt. Harap dicatat bahwa Anda tidak dapat mengubah LayoutType SmartArt karena bersifat read‑only dan hanya ditetapkan saat bentuk SmartArt ditambahkan.
- Buat sebuah instance dari kelas Presentation dan muat presentasi dengan bentuk SmartArt.
- Dapatkan referensi slide pertama dengan menggunakan indeksnya.
- Iterasi setiap bentuk di dalam slide pertama.
- Periksa apakah bentuk bertipe SmartArt dan lakukan typecast pada bentuk yang dipilih menjadi SmartArt bila memang SmartArt.
- Iterasi semua Nodes di dalam bentuk SmartArt.
- Akses dan tampilkan informasi seperti posisi Node SmartArt, level, dan Teks.
// Menginstansiasi Kelas Presentation
Presentation pres = new Presentation("SmartArtShape.pptx");
try {
// Dapatkan slide pertama
ISlide slide = pres.getSlides().get_Item(0);
// Menelusuri setiap bentuk di dalam slide pertama
for (IShape shape : slide.getShapes())
{
// Periksa apakah bentuk bertipe SmartArt
if (shape instanceof ISmartArt)
{
// Lakukan typecast bentuk ke SmartArt
ISmartArt smart = (ISmartArt) shape;
// Menelusuri semua node di dalam SmartArt
for (int i = 0; i < smart.getAllNodes().size(); i++)
{
// Mengakses node SmartArt pada indeks i
SmartArtNode node = (SmartArtNode) smart.getAllNodes().get_Item(i);
// Mencetak parameter node SmartArt
System.out.print(node.getTextFrame().getText() + " " + node.getLevel() + " " + node.getPosition());
}
}
}
} finally {
if (pres != null) pres.dispose();
}
Mengakses Node Anak SmartArt
Kode contoh berikut akan membantu mengakses node anak yang termasuk dalam masing‑masing node bentuk SmartArt.
- Buat sebuah instance dari kelas Presentation dan muat presentasi dengan bentuk SmartArt.
- Dapatkan referensi slide pertama dengan menggunakan indeksnya.
- Iterasi setiap bentuk di dalam slide pertama.
- Periksa apakah bentuk bertipe SmartArt dan lakukan typecast pada bentuk yang dipilih menjadi SmartArt bila memang SmartArt.
- Iterasi semua Nodes di dalam bentuk SmartArt.
- Untuk setiap [Node] bentuk SmartArt yang dipilih, iterasi semua Child Nodes di dalam node tertentu.
- Akses dan tampilkan informasi seperti posisi, level, dan Teks [Child Node].
// Menginstansiasi Kelas Presentation
Presentation pres = new Presentation("AccessChildNodes.pptx");
try {
// Dapatkan slide pertama
ISlide slide = pres.getSlides().get_Item(0);
// Menelusuri setiap bentuk di dalam slide pertama
for (IShape shape : slide.getShapes())
{
// Periksa apakah bentuk bertipe SmartArt
if (shape instanceof ISmartArt)
{
// Lakukan typecast bentuk ke SmartArt
ISmartArt smart = (ISmartArt) shape;
// Menelusuri semua node di dalam SmartArt
for (int i = 0; i < smart.getAllNodes().size(); i++)
{
// Mengakses node SmartArt pada indeks i
SmartArtNode node0 = (SmartArtNode) smart.getAllNodes().get_Item(i);
// Menelusuri node anak dalam node SmartArt pada indeks i
for (int j = 0; j < node0.getChildNodes().size(); j++)
{
// Mengakses node anak dalam node SmartArt
SmartArtNode node = (SmartArtNode) node0.getChildNodes().get_Item(j);
// Mencetak parameter node anak SmartArt
System.out.print("j = " + j + ", Text = " + node.getTextFrame().getText() + ", Level = " + node.getLevel() + ", Position = " + node.getPosition());
}
}
}
}
} finally {
if (pres != null) pres.dispose();
}
Mengakses Node Anak SmartArt pada Posisi Tertentu
Dalam contoh ini, kita akan mempelajari cara mengakses node anak pada posisi tertentu yang termasuk dalam masing‑masing node bentuk SmartArt.
- Buat sebuah instance dari kelas Presentation class.
- Dapatkan referensi slide pertama dengan menggunakan indeksnya.
- Tambahkan bentuk SmartArt bertipe StackedList.
- Akses bentuk SmartArt yang ditambahkan.
- Akses node pada indeks 0 untuk bentuk SmartArt yang diakses.
- Sekarang, akses [Child Node] pada posisi 1 untuk node SmartArt yang diakses menggunakan metode get_Item().
- Akses dan tampilkan informasi seperti posisi, level, dan Teks [Child Node].
// Menginstansiasi presentasi
Presentation pres = new Presentation();
try {
// Mengakses slide pertama
ISlide slide = pres.getSlides().get_Item(0);
// Menambahkan bentuk SmartArt di slide pertama
ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
// Mengakses node SmartArt pada indeks 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
// Mengakses node anak pada posisi 1 di node induk
int position = 1;
SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).get_Item(position);
// Mencetak parameter node anak SmartArt
System.out.print("Text = " + chNode.getTextFrame().getText() + ", Level = " + chNode.getLevel() + ", Position = " + chNode.getPosition());
} finally {
if (pres != null) pres.dispose();
}
Menghapus Node SmartArt
Dalam contoh ini, kita akan belajar menghapus node di dalam bentuk SmartArt.
- Buat sebuah instance dari kelas Presentation dan muat presentasi dengan bentuk SmartArt.
- Dapatkan referensi slide pertama dengan menggunakan indeksnya.
- Iterasi setiap bentuk di dalam slide pertama.
- Periksa apakah bentuk bertipe SmartArt dan lakukan typecast pada bentuk yang dipilih menjadi SmartArt bila memang SmartArt.
- Periksa apakah [SmartArt] memiliki lebih dari 0 node.
- Pilih node SmartArt yang akan dihapus.
- Sekarang, hapus node yang dipilih menggunakan metode RemoveNode.
- Simpan Presentasi.
// Muat presentasi yang diinginkan
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
// Menelusuri setiap bentuk di dalam slide pertama
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// Periksa apakah bentuk bertipe SmartArt
if (shape instanceof ISmartArt)
{
// Lakukan typecast bentuk ke SmartArt
ISmartArt smart = (ISmartArt) shape;
if (smart.getAllNodes().size() > 0)
{
// Mengakses node SmartArt pada indeks 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
// Menghapus node yang dipilih
smart.getAllNodes().removeNode(node);
}
}
}
// Menyimpan Presentasi
pres.save("RemoveSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Menghapus Node SmartArt dari Posisi Tertentu
Dalam contoh ini, kita akan belajar menghapus node di dalam bentuk SmartArt pada posisi tertentu.
- Buat sebuah instance dari kelas Presentation dan muat presentasi dengan bentuk SmartArt.
- Dapatkan referensi slide pertama dengan menggunakan indeksnya.
- Iterasi setiap bentuk di dalam slide pertama.
- Periksa apakah bentuk bertipe SmartArt dan lakukan typecast pada bentuk yang dipilih menjadi SmartArt bila memang SmartArt.
- Pilih node bentuk SmartArt pada indeks 0.
- Sekarang, periksa apakah node SmartArt yang dipilih memiliki lebih dari 2 node anak.
- Sekarang, hapus node pada Position 1 menggunakan metode RemoveNode.
- Simpan Presentasi.
// Muat presentasi yang diinginkan
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
// Menelusuri setiap bentuk di dalam slide pertama
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// Periksa apakah bentuk bertipe SmartArt
if (shape instanceof SmartArt)
{
// Lakukan typecast bentuk ke SmartArt
SmartArt smart = (SmartArt) shape;
if (smart.getAllNodes().size() > 0)
{
// Mengakses node SmartArt pada indeks 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
if (node.getChildNodes().size() >= 2)
{
// Menghapus node anak pada posisi 1
(node.getChildNodes()).removeNode(1);
}
}
}
}
// Menyimpan Presentasi
pres.save("RemoveSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Menetapkan Posisi Kustom untuk Node Anak dalam Objek SmartArt
Sekarang Aspose.Slides for Java mendukung pengaturan properti SmartArtShape X dan Y. Potongan kode di bawah menunjukkan cara mengatur posisi, ukuran, dan rotasi kustom SmartArtShape; juga harap dicatat bahwa menambahkan node baru menyebabkan perhitungan ulang posisi dan ukuran semua node. Dengan pengaturan posisi kustom, pengguna dapat menempatkan node sesuai kebutuhan.
// Instansiasi Kelas Presentation
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try{
ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(20, 20, 600, 500, SmartArtLayoutType.OrganizationChart);
// Pindahkan bentuk SmartArt ke posisi baru
ISmartArtNode node = smart.getAllNodes().get_Item(1);
ISmartArtShape shape = node.getShapes().get_Item(1);
shape.setX(shape.getX() + shape.getWidth() * 2);
shape.setY(shape.getY() - shape.getHeight() * 2);
// Ubah lebar bentuk SmartArt
node = smart.getAllNodes().get_Item(2);
shape = node.getShapes().get_Item(1);
shape.setWidth(shape.getWidth() + shape.getWidth() * 2);
// Ubah tinggi bentuk SmartArt
node = smart.getAllNodes().get_Item(3);
shape = node.getShapes().get_Item(1);
shape.setHeight(shape.getHeight() + shape.getHeight() * 2);
// Ubah rotasi bentuk SmartArt
node = smart.getAllNodes().get_Item(4);
shape = node.getShapes().get_Item(1);
shape.setRotation(90);
pres.save("SmartArt.pptx", SaveFormat.Pptx);
}finally {
pres.dispose();
}
Memeriksa Node Asisten
Kami akan menggunakan bentuk SmartArt sumber berikut untuk penyelidikan kami pada berbagai bagian artikel ini.
![]() |
|---|
| Gambar: Bentuk SmartArt sumber dalam slide |
Dalam kode contoh berikut kami akan menyelidiki cara mengidentifikasi Assistant Nodes dalam koleksi node SmartArt dan mengubahnya.
- Buat sebuah instance dari kelas Presentation dan muat presentasi dengan bentuk SmartArt.
- Dapatkan referensi slide kedua dengan menggunakan indeksnya.
- Iterasi setiap bentuk di dalam slide pertama.
- Periksa apakah bentuk bertipe SmartArt dan lakukan typecast pada bentuk yang dipilih menjadi SmartArt bila memang SmartArt.
- Iterasi semua node di dalam bentuk SmartArt dan periksa apakah mereka merupakan Assistant Nodes.
- Ubah status Assistant Node menjadi node normal.
- Simpan Presentasi.
// Membuat instance presentasi
Presentation pres = new Presentation("AddNodes.pptx");
try {
// Menelusuri setiap bentuk di dalam slide pertama
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// Memeriksa apakah bentuk bertipe SmartArt
if (shape instanceof ISmartArt)
{
// Lakukan typecast bentuk ke SmartArt
ISmartArt smart = (SmartArt) shape;
// Menelusuri semua node dari bentuk SmartArt
for (int i = 0; i < smart.getAllNodes().size(); i++)
{
ISmartArtNode node = smart.getAllNodes().get_Item(i);
// Memeriksa apakah node adalah node Asisten
if (node.isAssistant())
{
// Mengatur node Asisten menjadi false dan menjadikannya node normal
node.isAssistant();
}
}
}
}
// Menyimpan Presentasi
pres.save("ChangeAssitantNode.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
![]() |
|---|
| Gambar: Assistant Nodes Diubah dalam bentuk SmartArt di dalam slide |
Mengatur Format Isi Node
Aspose.Slides for Java memungkinkan penambahan bentuk SmartArt kustom dan mengatur format isinya. Artikel ini menjelaskan cara membuat dan mengakses bentuk SmartArt serta mengatur format isi mereka menggunakan Aspose.Slides for Java.
Silakan ikuti langkah‑langkah di bawah ini:
- Buat sebuah instance dari kelas Presentation.
- Dapatkan referensi slide dengan menggunakan indeksnya.
- Tambahkan bentuk SmartArt dengan mengatur LayoutType‑nya.
- Atur FillFormat untuk node bentuk SmartArt.
- Tuliskan presentasi yang telah dimodifikasi sebagai file PPTX.
// Menginstansiasi presentasi
Presentation pres = new Presentation();
try {
// Mengakses slide
ISlide slide = pres.getSlides().get_Item(0);
// Menambahkan bentuk SmartArt dan node
ISmartArt chevron = slide.getShapes().addSmartArt(10, 10, 800, 60, SmartArtLayoutType.ClosedChevronProcess);
ISmartArtNode node = chevron.getAllNodes().addNode();
node.getTextFrame().setText("Some text");
// Mengatur warna isi node
for (IShape item : node.getShapes())
{
item.getFillFormat().setFillType(FillType.Solid);
item.getFillFormat().getSolidFillColor().setColor(Color.RED);
}
// Menyimpan presentasi
pres.save("TestSmart.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Menghasilkan Thumbnail Node Anak SmartArt
Pengembang dapat menghasilkan thumbnail dari node Anak SmartArt dengan mengikuti langkah‑langkah di bawah ini:
- Buat sebuah instance dari kelas Presentation.
- Tambahkan SmartArt.
- Dapatkan referensi sebuah node dengan menggunakan indeksnya.
- Dapatkan gambar thumbnail.
- Simpan gambar thumbnail dalam format gambar apa pun yang diinginkan.
// Membuat instance kelas Presentation yang mewakili file PPTX
Presentation pres = new Presentation();
try {
// Tambahkan SmartArt
ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicCycle);
// Dapatkan referensi node dengan menggunakan indeksnya
ISmartArtNode node = smart.getNodes().get_Item(1);
// Dapatkan thumbnail
IImage slideImage = node.getShapes().get_Item(0).getImage();
// Simpan thumbnail
try {
slideImage.save("SmartArt_ChildNote_Thumbnail.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
FAQ
Apakah animasi SmartArt didukung?
Ya. SmartArt diperlakukan sebagai bentuk biasa, sehingga Anda dapat menerapkan animasi standar (masuk, keluar, penekanan, jalur gerak) dan menyesuaikan waktu. Anda juga dapat menganimasikan bentuk di dalam node SmartArt bila diperlukan.
Bagaimana saya dapat menemukan SmartArt tertentu pada slide secara andal jika ID internalnya tidak diketahui?
Berikan dan cari berdasarkan teks alternatif. Menetapkan AltText yang khas pada SmartArt memungkinkan Anda menemukannya secara programatis tanpa bergantung pada pengidentifikasi internal.
Apakah tampilan SmartArt akan dipertahankan saat mengonversi presentasi ke PDF?
Ya. Aspose.Slides merender SmartArt dengan fidelitas visual tinggi selama ekspor PDF, mempertahankan tata letak, warna, dan efek.
Apakah saya dapat mengekstrak gambar seluruh SmartArt (untuk pratinjau atau laporan)?
Ya. Anda dapat merender bentuk SmartArt ke format raster atau ke SVG untuk output vektor yang dapat diskalakan, sehingga cocok untuk thumbnail, laporan, atau penggunaan web.

