如何创建ONLYOFFICE宏,缩放幻灯片中的所有图片
在演示文稿中处理图像时,尤其是在图像较多的演示文稿中,手动调整每个图像的大小可能会非常耗时。利用本文即将介绍的宏,您可以轻松调整演示文稿中所有图像的大小。让我们深入了解如何构建这个简单的宏,优化您的演示文稿工作流程。
关于 ONLYOFFICE
ONLYOFFICE是一个国际开源项目,由领先的 IT 公司 Ascensio System SIA 开发。我们在新加坡、拉脱维亚、英国、塞尔维亚、亚美尼亚和乌兹别克斯坦设有分公司,员工和贡献者遍布全球 30 多个国家。我们的中国客户包括:南京大学、知网、百威中国、中信集团等。观看下方视频,进一步了解我们:
ONLYOFFICE,兼顾协作与安全的开源办公套件
ONLYOFFICE 提供文档编辑器:支持编辑处理文本文档、电子表格、演示文稿、表单、PDF和电子书。还提供文件储存及协作平台、文档生成器、转换器等其他工具。
目前 ONLYOFFICE 有许多广受欢迎插件,例如ChatGPT、智谱 AI、二维码生成器、Zotero、draw.io、Pixabay、Markdown 转换器等,也邀请大家开发适合中国用户的插件!
什么是 ONLYOFFICE 宏
如果您是一名资深 Microsoft Excel 用户,那么相信您已对于 VBA 宏非常熟悉了。这些宏是帮助您自动执行日常任务的小型脚本。无论是重构数据,还是在单元格区域中插入多个值。ONLYOFFICE 宏的基础是 JavaScript 语法与文档生成器 API 方法。基于 JavaSript 的宏易于使用,具有跨平台特性且十分安全。这就使得其与 VBA 相比有着显著的优势。
下面一起来看看如何创建宏,用来调整幻灯片中所有图像的大小。
构建宏
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);
}
})();
让我们一起看看宏的执行效果。
如何创建ONLYOFFICE宏,缩放幻灯片中的所有图片
搞定!使用一个简单的宏,您便能一键调整演示文稿中所有图像的大小。ONLYOFFICE API 是一个强大的工具,能够处理各种任务,为开发更多宏和插件开辟无限可能。借助这个API,您可以充分发挥ONLYOFFICE的潜力,提高工作效率,简化工作流程。
如果您有任何问题或创新想法,欢迎与我们分享。我们重视您的反馈,并期待与您合作。祝您的探索之旅一切顺利!
相关链接
原文地址:https://blog.csdn.net/m0_68274698/article/details/142568794
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!