Cómo dimensionar imágenes en documentos docx con una macro de ONLYOFFICE

11 octubre 2024By Sergey

Recientemente hemos creado una macro para dimensionar imágenes en nuestro editor de presentaciones. Continuando con nuestras macros para modificar imágenes, vamos a crear una macro para modificar fácilmente imágenes dentro de documentos. Esta sencilla macro nos permitirá realizar ajustes como cambiar el tamaño de las imágenes, recortarlas y mucho más. A continuación se describe cómo crear esta sencilla macro.

Cómo dimensionar imágenes en documentos docx con una macro de ONLYOFFICE

Creación de la macro

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

Empezamos definiendo la función processImage(), que se encarga de modificar las imágenes del documento. Esta función itera sobre cada imagen del documento utilizando el método forEach().

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

Dentro del bucle forEach, utilizamos el método SetSize() para cambiar el tamaño de cada imagen a la anchura y altura deseadas. Puedes ajustar los parámetros de anchura y altura según tus preferencias, pero si no los cambias, por defecto serán 100 x 100 mm.

Ojo: Las dimensiones utilizadas en el método SetSize() están en unidades métricas inglesas (UME). La anchura y la altura en milímetros se multiplican por 36.000 para convertirlas en UME. Pasar los valores en (mm) sin conversión no funcionará.

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

A continuación viene la parte principal de la macro. Comenzamos recuperando el documento en la variable document y almacenando todas las imágenes del documento en la matriz allImg.

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

A continuación, ejecutamos un bucle if para asegurarnos de que la matriz allImg existe y no está vacía. Si alguna de las condiciones no se cumple, paramos la ejecución de la macro.

  processImage(allImg);

Por último, llamamos a la función processImage() (definida anteriormente), pasándole la matriz allImg.

El código completo de la macro

Este es el código de toda la macro:

(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);
})();

Ahora vamos a ver cómo funciona nuestra macro.

Ya está. Una macro simple que te permite modificar imágenes en tus documentos de texto. La API de ONLYOFFICE es una herramienta poderosa, capaz de manejar una variedad de tareas y abrir un sinfín de posibilidades para desarrollar más macros y plugins. Con esta API, puedes desbloquear toda la potencia de ONLYOFFICE para mejorar tu productividad y agilizar tus flujos de trabajo.

Si tienes alguna pregunta o conceptos innovadores, te animamos a compartirlos con nosotros. Valoramos tu contribución y nos gustaría colaborar contigo. ¡Te deseamos mucha suerte en tus esfuerzos exploratorios!

Crea tu cuenta gratuita de ONLYOFFICE

Visualiza, edita y colabora en documentos, hojas, diapositivas, formularios y archivos PDF en línea.