使用 JavaScript 管理簡報中的 SmartArt 圖形
概覽
Aspose.Slides 允許您以程式方式在 PowerPoint 簡報中建立與管理 SmartArt 圖形。本文說明如何將 SmartArt 形狀新增至投影片、存取現有的 SmartArt 形狀、依特定版面配置類型尋找 SmartArt,並透過變更 SmartArt 樣式或色彩樣式來更新其視覺外觀。
範例示範如何透過簡報投影片的形狀集合操作 SmartArt 形狀、檢查形狀是否為 SmartArt,並進一步修改或檢視其屬性。
建立 SmartArt 形狀
Aspose.Slides for Node.js via Java 已提供建立 SmartArt 形狀的 API。若要在投影片中建立 SmartArt 形狀,請依照下列步驟操作:
- 建立 Presentation 類別的實例。
- 使用索引取得投影片的參考。
- 使用設定 LayoutType 來 Add a SmartArt shape。
- 將修改後的簡報儲存為 PPTX 檔案。
// 實例化 Presentation 類別
var pres = new aspose.slides.Presentation();
try {
// 取得第一張投影片
var slide = pres.getSlides().get_Item(0);
// 新增 Smart Art 形狀
var smart = slide.getShapes().addSmartArt(0, 0, 400, 400, aspose.slides.SmartArtLayoutType.BasicBlockList);
// 儲存簡報
pres.save("SimpleSmartArt.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
![]() |
|---|
| 圖示:已新增至投影片的 SmartArt 形狀 |
存取投影片中的 SmartArt 形狀
以下程式碼將用於存取簡報投影片中新增的 SmartArt 形狀。在示範程式碼中,我們會遍歷投影片內的每個形狀,並檢查它是否為 SmartArt 形狀。若形狀屬於 SmartArt 類型,則會將其型別轉換為 SmartArt 實例。
// 載入所需的簡報
var pres = new aspose.slides.Presentation("AccessSmartArtShape.pptx");
try {
// 遍歷第一張投影片內的每個形狀
for (let i = 0; i < pres.getSlides().get_Item(0).getShapes().size(); i++) {
let shape = pres.getSlides().get_Item(0).getShapes().get_Item(i);
// 檢查形狀是否為 SmartArt 類型
if (java.instanceOf(shape, "com.aspose.slides.ISmartArt")) {
// 將形狀型別轉換為 SmartArtEx
var smart = shape;
console.log("Shape Name:" + smart.getName());
}
}
} finally {
if (pres != null) {
pres.dispose();
}
}
以特定版面配置類型存取 SmartArt 形狀
以下範例程式碼可協助存取具有特定 LayoutType 的 SmartArt 形狀。請注意,SmartArt 的 LayoutType 為唯讀,僅在新增 SmartArt 形狀時設定,無法變更。
- 建立 Presentation 類別的實例,並載入含有 SmartArt 形狀的簡報。
- 使用索引取得第一張投影片的參考。
- 遍歷第一張投影片內的所有形狀。
- 檢查形狀是否為 SmartArt 類型,若是則將選取的形狀型別轉換為 SmartArt。
- 檢查具特定 LayoutType 的 SmartArt 形狀,並執行後續所需的操作。
var pres = new aspose.slides.Presentation("AccessSmartArtShape.pptx");
try {
// 遍歷第一張投影片內的每個形狀
for (let i = 0; i < pres.getSlides().get_Item(0).getShapes().size(); i++) {
let shape = pres.getSlides().get_Item(0).getShapes().get_Item(i);
// 檢查形狀是否為 SmartArt 類型
if (java.instanceOf(shape, "com.aspose.slides.ISmartArt")) {
// 將形狀型別轉換為 SmartArtEx
var smart = shape;
// 檢查 SmartArt 版面配置
if (smart.getLayout() == aspose.slides.SmartArtLayoutType.BasicBlockList) {
console.log("Do some thing here....");
}
}
}
} finally {
if (pres != null) {
pres.dispose();
}
}
變更 SmartArt 形狀樣式
在此範例中,我們將學習如何變更任何 SmartArt 形狀的快速樣式。
- 建立 Presentation 類別的實例,並載入含有 SmartArt 形狀的簡報。
- 使用索引取得第一張投影片的參考。
- 遍歷第一張投影片內的所有形狀。
- 檢查形狀是否為 SmartArt 類型,若是則將選取的形狀型別轉換為 SmartArt。
- 尋找具特定樣式的 SmartArt 形狀。
- 為 SmartArt 形狀設定新的樣式。
- 儲存簡報。
// 實例化 Presentation 類別
var pres = new aspose.slides.Presentation("SimpleSmartArt.pptx");
try {
// 取得第一張投影片
var slide = pres.getSlides().get_Item(0);
// 遍歷第一張投影片內的每個形狀
for (let i = 0; i < slide.getShapes().size(); i++) {
let shape = slide.getShapes().get_Item(i);
// 檢查形狀是否為 SmartArt 類型
if (java.instanceOf(shape, "com.aspose.slides.ISmartArt")) {
// 將形狀型別轉換為 SmartArtEx
var smart = shape;
// 檢查 SmartArt 樣式
if (smart.getQuickStyle() == aspose.slides.SmartArtQuickStyleType.SimpleFill) {
// 變更 SmartArt 樣式
smart.setQuickStyle(aspose.slides.SmartArtQuickStyleType.Cartoon);
}
}
}
// 儲存簡報
pres.save("ChangeSmartArtStyle.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
pres.dispose();
}
![]() |
|---|
| 圖示:已變更樣式的 SmartArt 形狀 |
變更 SmartArt 形狀色彩樣式
在此範例中,我們將學習如何變更任何 SmartArt 形狀的色彩樣式。以下範例程式碼會存取具特定色彩樣式的 SmartArt 形狀,並變更其樣式。
- 建立 Presentation 類別的實例,並載入含有 SmartArt 形狀的簡報。
- 使用索引取得第一張投影片的參考。
- 遍歷第一張投影片內的所有形狀。
- 檢查形狀是否為 SmartArt 類型,若是則將選取的形狀型別轉換為 SmartArt。
- 尋找具特定色彩樣式的 SmartArt 形狀。
- 為 SmartArt 形狀設定新的色彩樣式。
- 儲存簡報。
// 實例化 Presentation 類別
var pres = new aspose.slides.Presentation("SimpleSmartArt.pptx");
try {
// 取得第一張投影片
var slide = pres.getSlides().get_Item(0);
// 遍歷第一張投影片內的每個形狀
for (let i = 0; i < slide.getShapes().size(); i++) {
let shape = slide.getShapes().get_Item(i);
// 檢查形狀是否為 SmartArt 類型
if (java.instanceOf(shape, "com.aspose.slides.ISmartArt")) {
// 將形狀型別轉換為 SmartArtEx
var smart = shape;
// 檢查 SmartArt 色彩類型
if (smart.getColorStyle() == aspose.slides.SmartArtColorType.ColoredFillAccent1) {
// 變更 SmartArt 色彩類型
smart.setColorStyle(aspose.slides.SmartArtColorType.ColorfulAccentColors);
}
}
}
// 儲存簡報
pres.save("ChangeSmartArtColorStyle.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
pres.dispose();
}
![]() |
|---|
| 圖示:已變更色彩樣式的 SmartArt 形狀 |
常見問題
我可以將 SmartArt 作為單一物件進行動畫化嗎?
可以。SmartArt 為形狀,您可以透過動畫 API (進入、退出、強調、移動路徑)套用標準動畫,就像其他形狀一樣。
如果我不知道 SmartArt 的內部 ID,該如何在投影片上找到特定的 SmartArt?
設定並使用替代文字 (AltText),再依該值搜尋形狀——這是定位目標形狀的建議方式。
我可以將 SmartArt 與其他形狀群組嗎?
可以。您可以將 SmartArt 與其他形狀(圖片、表格等)群組,然後操作群組。
我要如何取得特定 SmartArt 的影像(例如,用於預覽或報告)?
匯出該形狀的縮圖/影像;程式庫可將個別形狀轉換為點陣檔(PNG/JPG/TIFF)。
將整份簡報轉換為 PDF 時,SmartArt 的外觀會被保留嗎?
會。渲染引擎針對PDF 匯出提供高保真度,並具備多種品質與相容性選項。

