如何使用ONLYOFFICE宏缩放幻灯片中的图像
在演示文稿中处理图像时,尤其是在图像较多的演示文稿中,手动调整每个图像的大小可能会非常耗时。利用本文即将介绍的宏,您可以轻松调整演示文稿中所有图像的大小。让我们深入了解如何构建这个简单的宏,优化您的演示文稿工作流程。
构建宏
const resizeImg = (images, width, height, slideIndex) => {
const finalWdth = width * 36000; //Convert mm to EMUs
const finalHgt = height * 36000; //Convert mm to EMUs
images.forEach((element) => {
try {
element.SetSize(finalWdth, finalHgt);
} catch (error) {
console.error(
`Could not change size for one or more images in slide no. ${slideIndex}. Check your presentation once.`
);
}
});
};
我们首先定义一个函数resizeImg(),该函数负责调整图像的大小。该函数接收四个参数:图像数组、所需宽度、所需高度以及当前幻灯片的索引。
输入的宽度和高度将从毫米转换为EMUs(英制单位),然后作为参数传递给SetSize()方法。SetSize()方法会将每个图像的宽度和高度设置为输入值。
const oPresentation = Api.GetPresentation();
const slidesCount = oPresentation.GetSlidesCount();
接下来是宏的主要部分。我们首先使用GetPresentation()方法获取活动中的演示文稿(存储在oPresentation变量中),然后使用GetSlidesCount()方法获取幻灯片数量(存储在slidesCount变量中)。
const width = 100; //in mm (modify this value)
const height = 100; //in mm (modify this value)
然后,我们设置图像的所需宽度和高度,单位为毫米(mm)。您可以根据需要修改这些值。
if (slidesCount === 0) {
console.warn("You dont seem to have any slides in your presentation.");
return;
}
如果演示文稿没有幻灯片,我们记录一次警告并停止执行宏。
for (let i = 0; i < slidesCount; i++) {
const oSlide = oPresentation.GetSlideByIndex(i);
const slideImgs = oSlide.GetAllImages();
接下来,我们使用for循环遍历所有幻灯片。在每次循环中,我们使用GetAllImages()方法获取幻灯片中的所有图像。
if (slideImgs.length === 0) {
console.warn(`No images found on slide ${i + 1}`);
continue; //continue to next slide
}
如果演示文稿没有幻灯片,我们记录一次警告并转到下一张幻灯片。
resizeImg(slideImgs, width, height, i + 1);
确认幻灯片中存在图像后,宏便会调用resizeImg()方法。我们将幻灯片中所有图像的数组、高度、宽度以及当前幻灯片的索引作为参数传入。
完整的宏代码
以下是宏的完整代码:
(function () {
const resizeImg = (images, width, height, slideIndex) => {
const finalWdth = width * 36000; //Convert mm to EMUs
const finalHgt = height * 36000; //Convert mm to EMUs
images.forEach((element) => {
try {
element.SetSize(finalWdth, finalHgt);
} catch (error) {
console.error(
`Could not change size for one or more images in slide no. ${slideIndex}. Check your presentation once.`
);
}
});
};
try {
const oPresentation = Api.GetPresentation();
const slidesCount = oPresentation.GetSlidesCount();
const width = 100; //in mm (modify this value)
const height = 100; //in mm (modify this value)
if (slidesCount === 0) {
console.warn("You don't seem to have any slides in your presentation.");
return;
}
for (let i = 0; i < slidesCount; i++) {
const oSlide = oPresentation.GetSlideByIndex(i);
const slideImgs = oSlide.GetAllImages();
if (slideImgs.length === 0) {
console.warn(`No images found on slide ${i + 1}`);
continue; //continue to next slide
}
resizeImg(slideImgs, width, height, i + 1);
}
} catch (error) {
console.error("An unexpected error occurred while running the macro", error);
}
})();
让我们一起在Youtube看看宏的执行效果。
搞定!使用一个简单的宏,您便能一键调整演示文稿中所有图像的大小。ONLYOFFICE API 是一个强大的工具,能够处理各种任务,为开发更多宏和插件开辟无限可能。借助这个API,您可以充分发挥ONLYOFFICE的潜力,提高工作效率,简化工作流程。
如果您有任何问题或创新想法,欢迎与我们分享。我们重视您的反馈,并期待与您合作。祝您的探索之旅一切顺利!