使用 ONLYOFFICE 宏更改每张幻灯片中的字体和字号

2023年10月17日作者: Alina

演示文稿已经成为我们生活的重要组成部分。无论是商务会议还是学校的项目,我们都要使用演示文稿,向观众呈现我们的想法。在之前的一篇文章中,我们向大家介绍了一个,它可以将每张幻灯片上的形状替换为图表。今天,我们再上一层楼,使用一个新的宏,将演示文稿中每张幻灯片中的字体和字号统一做调整。

Change font family and size on every slide with ONLYOFFICE macro

构建宏

首先,我们使用“Api.GetPresentation()”方法获取一个演示文稿对象,并将其分配给变量“oPresentation”:

var oPresentation = Api.GetPresentation();

然后,使用“slideIndex”变量循环迭代演示文稿中的每张幻灯片。这个条件确保循环持续进行,直至处理完所有幻灯片:

for (var slideIndex = 0; slideIndex < oPresentation.GetSlidesCount(); slideIndex++) {
}

在循环中,我们使用“oPresentation.GetSlideByIndex(slideIndex)”方法获取特定幻灯片,将其分配给变量“oSlide”:

var oSlide = oPresentation.GetSlideByIndex(slideIndex);

然后,我们获取当前幻灯片“oSlide”上的所有形状,将它们存储到名为“aShape”的数组中:

var aShape = oSlide.GetAllShapes();

另一个循环使用“shapeIndex”变量迭代当前幻灯片上所有的形状:

for (var shapeIndex = 0; shapeIndex < aShape.length; shapeIndex++) {
}

在形状循环中,我们使用“aShape[shapeIndex].GetDocContent()”获取当前形状的文档内容,将其存储到变量“content”中:

var content = aShape[shapeIndex].GetDocContent();

我们会检查“content”是否有效(即不为空或未定义),然后再进行下一步操作:

  if (content) {
}

如果是有效的,我们会使用“content.GetElementsCount()”获取“content”中元素的数量,并将其存储到“count”变量中:

var count = content.GetElementsCount();

第三个循环使用“elementIndex”变量迭代“content”中的每一个元素:

for (var elementIndex = 0; elementIndex < count; elementIndex++) {
}

在循环内部,我们使用“content.GetElement(elementIndex)”检索当前元素:

var element = content.GetElement(elementIndex);

我们会检查“element”是否有效,以避免出现错误:

if (element) {
}

如果“element”有效,我们会设置字号和字体:

element.SetFontSize(10);
element.SetFontFamily("Comic Sans");

这个宏的完整代码如下:

(function()
{
     oPresentation = Api.GetPresentation();
for (var slideIndex = 0; slideIndex < oPresentation.GetSlidesCount(); slideIndex++) {
    var oSlide = oPresentation.GetSlideByIndex(slideIndex);
    var aShape = oSlide.GetAllShapes();

    for (var shapeIndex = 0; shapeIndex < aShape.length; shapeIndex++) {
        var content = aShape[shapeIndex].GetDocContent();
        // Check if content is valid before proceeding
        if (content) {
            var count = content.GetElementsCount();
            for (var elementIndex = 0; elementIndex < count; elementIndex++) {
                var element = content.GetElement(elementIndex);
                // Check if element is valid before using it
                if (element) {
                    element.SetFontSize(10);
                    element.SetFontFamily("Comic Sans");
                }
            }
        }
    }
}

})();

我们来运行一下这个宏,看看它效果如何!

我们希望这个宏能快速成为您武器库中的宝贵资产,让您的工作效率有所提升。您可以使用 ONLYOFFICE 宏,提升效率,简化工作流。

在您专注探索怎么编写宏时,也要抓住 ONLYOFFICE API 提供的无限可能。ONLYOFFICE 宏十分灵活,您根据自己的具体需求对其进行微调。如果您有问题或新创意,欢迎发表评论,或联系我们分享出来。我们期待与您探讨,展开合作。祝您探索之旅好运!