从列表项创建幻灯片
根据当前幻灯片中的列表项创建新幻灯片。每个列表项将成为一张幻灯片的标题。
(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颜色,获取形状类型,获取元素数量,获取元素,获取段落属性,获取左缩进,获取内容,创建幻灯片,添加幻灯片,获取宽度,获取高度,创建形状,设置位置,创建占位符,设置占位符,移除所有元素,创建段落,创建文本块,获取文本属性,设置字体大小,设置填充,添加文本,添加元素,推送元素,添加对象,获取所有形状
结果