Kelola SmartArt dalam Presentasi PowerPoint di Android
Gambaran Umum
SmartArt adalah diagram PowerPoint yang dibuat dari node, bentuk node, dan tata letak. Dengan Aspose.Slides untuk Android via Java, Anda dapat membuat SmartArt, membaca teks dari node-nya, mengubah tata letaknya, memeriksa node tersembunyi, mengonfigurasi tata letak diagram organisasi, dan membuat diagram organisasi bergambar.
Dapatkan Teks dari Objek SmartArt
Sebuah node SmartArt dapat berisi satu atau lebih bentuk. Untuk membaca teks dari bentuk node, iterasi melalui ISmartArt.getAllNodes, lalu baca ITextFrame yang dikembalikan oleh ISmartArtShape.getTextFrame.
Contoh ini memerlukan presentasi dengan setidaknya satu slide dan objek SmartArt sebagai bentuk pertama pada slide tersebut. Ia mencetak setiap frame teks yang tersedia ke konsol.
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();
}
Ubah Tipe Tata Letak Objek SmartArt
Tata letak SmartArt mengontrol bagaimana node diatur dan dihubungkan. Contoh berikut membuat objek SmartArt dengan nilai BasicBlockList dari SmartArtLayoutType , mengubahnya menjadi nilai BasicProcess, dan menyimpan presentasi. Posisi dan ukuran yang diberikan ke IShapeCollection.addSmartArt diukur dalam poin. Gunakan ISmartArt.setLayout untuk mengubah tata letak.
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();
}
Periksa Apakah Node SmartArt Tersembunyi
ISmartArtNode.isHidden menunjukkan apakah node tersembunyi dalam model data SmartArt. Node tersembunyi dapat ada dalam struktur bahkan ketika tata letak yang dipilih tidak menampilkannya sebagai elemen diagram yang terlihat.
Contoh berikut menambahkan node ke objek SmartArt yang menggunakan nilai RadialCycle dari SmartArtLayoutType , dan memeriksa status tersembunyi node yang ditambahkan. Ia mencetak pesan jika node tersembunyi dan menyimpan diagram.
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();
}
Dapatkan atau Atur Tata Letak Diagram Organisasi
Untuk diagram SmartArt yang menggunakan tata letak diagram organisasi, ISmartArtNode.getOrganizationChartLayout dan ISmartArtNode.setOrganizationChartLayout menentukan bagaimana node anak diatur di bawah node induk. Misalnya, Anda dapat mengatur node anak menggantung dari kiri, kanan, atau kedua sisi, tergantung pada OrganizationChartLayoutType yang dipilih.
Contoh berikut membuat diagram organisasi dan mengatur tata letak untuk node pertama ke nilai LeftHanging dari OrganizationChartLayoutType . Indeks berbasis nol 0 memilih node tingkat teratas pertama; node anaknya menggunakan susunan yang dipilih. Presentasi yang dimodifikasi kemudian disimpan.
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();
}
Buat Diagram Organisasi Bergambar
Diagram organisasi bergambar adalah tata letak SmartArt yang dirancang untuk diagram hierarki yang menyertakan placeholder gambar. Gunakan nilai PictureOrganizationChart dari SmartArtLayoutType saat menambahkan objek SmartArt ke slide. Contoh ini menyimpan diagram dengan placeholder gambar; tidak mengisi placeholder dengan gambar.
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();
}
Konversi Diagram Warisan menjadi Grup Bentuk
Saat memodernisasi presentasi yang ada, Anda mungkin perlu memperbarui diagram organisasi yang awalnya dibuat di PowerPoint 97–2003. Aspose.Slides merepresentasikan diagram warisan ini sebagai objek ILegacyDiagram. Gunakan LegacyDiagram.convertToGroupShape untuk mengonversi diagram menjadi grup bentuk sehingga Anda dapat mengedit elemen visual individu. Lihat LegacyDiagram API Reference untuk detail.
Konversi menambahkan grup baru ke koleksi bentuk tanpa menghapus diagram asli. Setelah konversi berhasil, hapus yang asli dengan IShapeCollection.remove untuk menghindari konten duplikat. Kumpulkan diagram warisan ke dalam daftar sebelum mengonversinya sehingga penambahan dan penghapusan bentuk tidak mengganggu iterasi.
Contoh berikut membuka presentasi, mencari setiap slide, mengonversi diagram menjadi grup bentuk, dan menyimpan presentasi yang diperbarui sebagai 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();
}
Presentasi yang disimpan berisi grup bentuk yang dapat diedit menggantikan diagram warisan yang dikonversi, tanpa diagram asli yang tersisa bersamanya. Buka PPTX di PowerPoint untuk mengedit elemen individu dalam setiap grup, seperti teks, isian, atau posisi mereka.
FAQ
Apakah SmartArt mendukung pencerminan atau pembalikan untuk bahasa RTL?
Ya. Metode ISmartArt.setReversed mengubah arah diagram dari kiri-ke-kanan ke kanan-ke-kiri, atau sebaliknya, ketika tata letak SmartArt yang dipilih mendukung pembalikan.
Bagaimana saya dapat menyalin SmartArt ke slide yang sama atau ke presentasi lain sambil mempertahankan format?
Anda dapat menyalin bentuk SmartArt dengan ShapeCollection.addClone atau menyalin seluruh slide yang berisi SmartArt. Kedua pendekatan mempertahankan ukuran, posisi, dan format.
Bagaimana cara saya merender SmartArt ke gambar raster untuk pratinjau atau ekspor web?
Merender slide atau seluruh presentasi ke PNG atau JPEG. SmartArt dirender sebagai bagian dari slide.
Bagaimana saya dapat menemukan objek SmartArt tertentu pada slide jika ada beberapa?
Gunakan Shape.setAlternativeText atau Shape.setName untuk menetapkan teks alternatif atau nama yang khas pada bentuk SmartArt, cari nilai tersebut di BaseSlide.getShapes , lalu periksa bahwa bentuk yang cocok adalah ISmartArt.