如何使用 ONLYOFFICE 宏缩放 docx 文档中的图像

2024年10月12日作者: Mona

最近,我们创建了一个用于在演示文稿编辑器中缩放图像的。接下来,我们将扩展此功能,创建一个宏,以便更便捷地修改文档中的图像,包括调整图像大小、裁剪等。让我们来看看如何构建这个简单的宏。

如何使用 ONLYOFFICE 宏缩放 docx 文档中的图像

构建宏

  const processImage = (images, width = 100, height = 100) => {
    images.forEach((element) => {

我们首先定义 processImage() 函数,该函数负责处理文档中图像的修改,通过 forEach() 方法遍历文档中的每个图像。

        element.SetSize(width * 36000, height * 36000);
        // Optional settings for flipping and wrapping
        //  element.SetVertFlip(true);
        //  element.SetHorFlip(true);
        //  element.SetWrappingStyle("inline");

forEach 循环中,调用 SetSize() 方法,将每张图片的大小调整为所需的宽度和高度,默认值为 100 x 100 毫米,当然,您也可以根据需求自行调整这些参数。

注意:SetSize() 方法采用 EMUs英制单位 尺寸单位因此需要提供的宽度和高度(以毫米为单位)乘以 36,000 转换为 EMUs。如果进行转换,直接传入毫米值无效

  const document = Api.GetDocument();
  const allImg = document.GetAllImages();

接下来是宏的主要部分。我们首先获取 document 变量中的文档,并将文档中的所有图像存储到 allImg 数组中。

  if (!allImg || allImg.length === 0) {
    console.error(
      `No images found in your document. Add some images and try again.`
    );
    return;
  }

接下来,我们执行一个 if 判断,以确保 allImg 数组存在且不为空。如果任何一个条件不满足,则宏的执行将被终止。

  processImage(allImg);

最后,我们调用之前定义的 processImage() 函数,并传入 allImg 数组。

完整的宏代码

以下是完整的宏代码:

(function () {
  const processImage = (images, width = 100, height = 100) => {
    images.forEach((element) => {
      try {
        // Resizes the image to the passed height and width. The *36000 converts to EMUs (Office Open XML unit).
        element.SetSize(width * 36000, height * 36000);
        // Optional settings for flipping and wrapping
        //  element.SetVertFlip(true);
        //  element.SetHorFlip(true);
        //  element.SetWrappingStyle("inline");   //other available wrapping styles : "square" | "tight" | "through" | "topAndBottom" | "behind" | "inFront"
      } catch (error) {
        console.error(
          `Could not tweak one or more images. Please check your document once.`
        );
      }
    });
  };

  const document = Api.GetDocument();
  const allImg = document.GetAllImages();

  if (!allImg || allImg.length === 0) {
    console.error(
      `No images found in your document. Add some images and try again.`
    );
    return;
  }

  processImage(allImg);
})();

现在,让我们在 Youtube 看看宏的运行过程。

至此,我们已完成了宏的制作!这个简单的宏能够帮助您一键调整文档中的图像。ONLYOFFICE API 是一个功能强大的工具,能够处理各种任务,并为开发更多宏和插件提供了无限可能。使用此 API,您可以充分发挥 ONLYOFFICE 的全部功能,提高工作效率,简化工作流程。

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

创建免费的 ONLYOFFICE 账户

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