如何使用ONLYOFFICE宏缩放幻灯片中的图像

2024年09月20日作者: Mona

在演示文稿中处理图像时,尤其是在图像较多的演示文稿中,手动调整每个图像的大小可能会非常耗时。利用本文即将介绍的宏,您可以轻松调整演示文稿中所有图像的大小。让我们深入了解如何构建这个简单的宏,优化您的演示文稿工作流程。

如何使用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的潜力,提高工作效率,简化工作流程。

如果您有任何问题或创新想法,欢迎与我们分享。我们重视您的反馈,并期待与您合作。祝您的探索之旅一切顺利!

创建免费的 ONLYOFFICE 账户

在线查看并协作编辑文本文档、电子表格、幻灯片、表单和 PDF 文件。