Cómo escalar imágenes en presentaciones con una macro de ONLYOFFICE

19 septiembre 2024By Dea

Al trabajar con imágenes en presentaciones, hay situaciones en las que ajustar manualmente el tamaño de cada imagen puede resultar muy laborioso, especialmente en presentaciones con muchas imágenes. Con esta macro, puedes redimensionar sin esfuerzo todas las imágenes de tu presentación. Vamos a ver cómo construir este sensillo macro y mejorar tu flujo de trabajo en las presentaciones.

Cómo escalar imágenes en presentaciones con una macro de ONLYOFFICE

Construyendo la macro

  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.`
        );
      }
    });
  };

Comenzamos definiendo una función resizeImg(), que ce encarga de redimensionar las imágenes. La función recibe cuatro parametros: un conjunto de imágenes, el ancho deseado, la altura deseada y el índice de la diapositiva actual.

El ancho y la altura introducidos se convierten de milímetros a EMUS (Unidades Métricas Inglesas), que luego se pasan como parámetros al método SetSize(). El método SetSize() establece el tamaño de cada imagen según el ancho y la altura introducidos.

    const oPresentation = Api.GetPresentation();
    const slidesCount = oPresentation.GetSlidesCount();

A continuación, viene la parte principal del macro. Comenzamos obteniendo la presentación activa utilizando el método GetPresentation() (almacenado en la variable oPresentation) y luego contamos las diapositivas usando el método GetSlidesCount() (almacenado en la variable slidesCount).

    const width = 100; //in mm (modify this value)
    const height = 100; //in mm (modify this value)

Luego, establecemos el ancho y la altura deseados para las imágenes en milímetros (mm). Puedes modificar estos valores según tus necesidades.

    if (slidesCount === 0) {
      console.warn("You dont seem to have any slides in your presentation.");
      return;
    }

Si la presentación no tiene diapositivas, registramos una advertencia y detenemos la ejecución de la macro.

    for (let i = 0; i < slidesCount; i++) {
      const oSlide = oPresentation.GetSlideByIndex(i);
      const slideImgs = oSlide.GetAllImages();

A continuación, utilizamos un bucle for para iterar a través de todas las diapositivas. En cada iteración, recuperamos todas las imagénes de la diapositiva utilizando el método GetAllImages().

      if (slideImgs.length === 0) {
        console.warn(`No images found on slide ${i + 1}`);
        continue; //continue to next slide
      }

Si la diapositiva no tiene imágenes, registramos una advertencia y pasamos a la siguiente diapositiva.

resizeImg(slideImgs, width, height, i + 1);

Una vez que nos aseguramos de que las imágenes están presentes en la diapositiva, se llama al método resizeImg(). Pasamos el conjunto de todas las imágenes en la diapositiva, seguido de la altura, el ancho y el índice de la diapositiva actual.

El código completo de la macro

Aquí está el código de la macro completa:

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

Ahora veamos cómo se funciona nuestro macro.

¡Eso fue todo! Una macro simple que te permite redimensionar todas las imágenes en tu presentación con solo hacer clic en un botón. 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 todo el potencial de ONLYOFFICE para mejorar tu producitividad y optimizar tus flujos de trabajo.

Si tienes alguna pregunta o conceptos innovadores, te animamos a compartirlos con nosotros. Valoramos tu opinión y esperamos colaborar contigo. Buena 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.