Kelola SmartArt dalam Presentasi PowerPoint Menggunakan JavaScript
Gambaran Umum
SmartArt adalah diagram PowerPoint yang dibuat dari node, bentuk node, dan tata letak. Dengan Aspose.Slides untuk Node.js via Java, Anda dapat membuat SmartArt, membaca teks dari node-nya, mengubah tata letaknya, memeriksa node tersembunyi, mengkonfigurasi tata letak bagan organisasi, dan membuat bagan organisasi dengan gambar.
Mengambil Teks dari Objek SmartArt
Node SmartArt dapat berisi satu atau lebih bentuk. Untuk membaca teks dari bentuk node, iterasi melalui SmartArt.getAllNodes, kemudian baca TextFrame yang dikembalikan oleh SmartArtShape.getTextFrame.
Contoh ini memerlukan presentasi dengan setidaknya satu slide dan objek SmartArt sebagai bentuk pertama pada slide tersebut. Itu mencetak setiap bingkai teks yang tersedia ke konsol.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
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());
}
}
}
} else {
console.log("The first shape is not a SmartArt object.");
}
} 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 ShapeCollection.addSmartArt diukur dalam poin. Gunakan SmartArt.setLayout untuk mengubah tata letak.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
let presentation = new aspose.slides.Presentation();
try {
let slide = presentation.getSlides().get_Item(0);
let smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.BasicBlockList);
smartArt.setLayout(aspose.slides.SmartArtLayoutType.BasicProcess);
presentation.save("ChangeSmartArtLayout.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Periksa Apakah Node SmartArt Tersembunyi
SmartArtNode.isHidden menunjukkan apakah node disembunyikan dalam model data SmartArt. Node tersembunyi dapat ada dalam struktur meskipun 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. Itu mencetak pesan jika node tersembunyi dan menyimpan diagram.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
let presentation = new aspose.slides.Presentation();
try {
let slide = presentation.getSlides().get_Item(0);
let smartArt = slide.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.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Dapatkan atau Atur Tata Letak Bagan Organisasi
Untuk diagram SmartArt yang menggunakan tata letak bagan organisasi, SmartArtNode.getOrganizationChartLayout dan SmartArtNode.setOrganizationChartLayout menentukan bagaimana node anak diatur di bawah node induk. Misalnya, Anda dapat mengatur node anak tergantung pada sisi kiri, kanan, atau kedua sisi, tergantung pada OrganizationChartLayoutType yang dipilih.
Contoh berikut membuat bagan organisasi dan mengatur tata letak untuk node pertama ke nilai LeftHanging dari OrganizationChartLayoutType. Indeks berbasis nol 0 memilih node level atas pertama; node anaknya menggunakan susunan yang dipilih. Presentasi yang dimodifikasi kemudian disimpan.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
let presentation = new aspose.slides.Presentation();
try {
let slide = presentation.getSlides().get_Item(0);
let smartArt = slide.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.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Buat Bagan Organisasi Gambar
Bagan organisasi gambar adalah tata letak SmartArt yang dirancang untuk diagram hierarki yang mencakup 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.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
let presentation = new aspose.slides.Presentation();
try {
let slide = presentation.getSlides().get_Item(0);
let smartArt = slide.getShapes().addSmartArt(0, 0, 400, 400, aspose.slides.SmartArtLayoutType.PictureOrganizationChart);
presentation.save("PictureOrganizationChart.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Konversi Diagram Legacy menjadi Grup Bentuk
Saat memodernisasi presentasi yang ada, Anda mungkin perlu memperbarui bagan organisasi yang awalnya dibuat di PowerPoint 97–2003. Aspose.Slides merepresentasikan diagram legacy ini sebagai objek LegacyDiagram. Gunakan LegacyDiagram.convertToGroupShape untuk mengonversi diagram menjadi grup bentuk sehingga Anda dapat menyunting 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 ShapeCollection.remove untuk menghindari konten duplikat. Kumpulkan diagram legacy 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.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
let presentation = new aspose.slides.Presentation("legacy-diagrams.ppt");
try {
let slides = presentation.getSlides();
for (let slideIndex = 0; slideIndex < slides.size(); slideIndex++) {
let slide = slides.get_Item(slideIndex);
let shapes = slide.getShapes();
let legacyDiagrams = [];
for (let shapeIndex = 0; shapeIndex < shapes.size(); shapeIndex++) {
let shape = shapes.get_Item(shapeIndex);
if (java.instanceOf(shape, "com.aspose.slides.ILegacyDiagram")) {
legacyDiagrams.push(shape);
}
}
for (let legacyDiagram of legacyDiagrams) {
let groupShape = legacyDiagram.convertToGroupShape();
if (groupShape != null) {
shapes.remove(legacyDiagram);
}
}
}
presentation.save("modernized.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Presentasi yang disimpan berisi grup bentuk yang dapat disunting menggantikan diagram legacy yang dikonversi, tanpa diagram asli yang tersisa di sampingnya. Buka PPTX di PowerPoint untuk menyunting elemen individu dalam setiap grup, seperti teks, isian, atau posisi mereka.
Tanya Jawab
Apakah SmartArt mendukung pemantulan atau pembalikan untuk bahasa RTL?
Ya. Metode SmartArt.setReversed mengubah arah diagram dari kiri-ke-kanan menjadi 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 merender SmartArt ke gambar raster untuk pratinjau atau ekspor web?
Render 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 itu di BaseSlide.getShapes, lalu periksa bahwa bentuk yang cocok adalah SmartArt.