跳到主要内容

从列表项创建幻灯片

根据当前幻灯片中的列表项创建新幻灯片。每个列表项将成为一张幻灯片的标题。

(function () {
let presentation = Api.GetPresentation();
let activeSlideIndex = presentation.GetCurSlideIndex();
let slide = presentation.GetSlideByIndex(activeSlideIndex);
let fill = Api.CreateSolidFill(Api.CreateRGBColor(51, 51, 51));

if (!slide) {
console.error("No slide is currently selected");
return;
}

function processShapes(shapes, startIndex = 0, numberedItems = []) {
if (startIndex >= shapes.length) {
return numberedItems;
}

let shape = shapes[startIndex];

if (shape.GetContent && shape.GetClassType() === "shape") {
function processParagraphs(content, paraIndex = 0) {
if (paraIndex >= content.GetElementsCount()) {
return;
}

let paragraph = content.GetElement(paraIndex);
let text = paragraph.GetText();

if (paragraph.GetParaPr().GetIndLeft() > 0) {
numberedItems.push(text.trim());
}

processParagraphs(content, paraIndex + 1);
}

let content = shape.GetContent();
processParagraphs(content);
}
return processShapes(shapes, startIndex + 1, numberedItems);
}
function createSlides(items, index = 0) {
if (index >= items.length) {
return;
}

let newSlide = Api.CreateSlide();
presentation.AddSlide(newSlide);

let slideWidth = presentation.GetWidth();
let slideHeight = presentation.GetHeight();

let shapeWidth = slideWidth * 0.7; // 可按照偏好调整形状宽度
let shapeHeight = slideHeight * 0.25; // 可按照偏好调整形状高度

let posX = (slideWidth - shapeWidth) / 2; // 水平居中位,可根据偏好调整
let posY = slideHeight * 0.1; // 垂直顶部位置,可根据偏好调整

let subtitleShape = Api.CreateShape("rect", shapeWidth, shapeHeight);

subtitleShape.SetPosition(posX, posY);

let placeholder = Api.CreatePlaceholder("subtitle");
subtitleShape.SetPlaceholder(placeholder);

let content = subtitleShape.GetContent();
if (content) {
content.RemoveAllElements();

let newParagraph = Api.CreateParagraph();
let newRun = Api.CreateRun();
let newTextPr = newRun.GetTextPr();
newTextPr.SetFontSize(50);
newTextPr.SetFill(fill);
newRun.AddText(items[index]);
newParagraph.AddElement(newRun);
content.Push(newParagraph);
}

newSlide.AddObject(subtitleShape);

createSlides(items, index + 1);
}

let shapes = slide.GetAllShapes();
let numberedItems = processShapes(shapes);

if (numberedItems.length === 0) {
return;
}

createSlides(numberedItems);
})();

使用方法:获取演示文稿获取当前幻灯片索引按索引获取幻灯片创建纯色填充创建RGB颜色获取形状类型获取元素数量获取元素获取段落属性获取左缩进获取内容创建幻灯片添加幻灯片获取宽度获取高度创建形状设置位置创建占位符设置占位符移除所有元素创建段落创建文本块获取文本属性设置字体大小设置填充添加文本添加元素推送元素添加对象获取所有形状

结果

从列表项创建幻灯片 从列表项创建幻灯片