Como dimensionar imagens em apresentações com uma macro do ONLYOFFICE

23 setembro 2024By Klaibson

Ao trabalhar com imagens em apresentações, há situações em que o ajuste manual do tamanho de cada imagem pode se tornar demorado, especialmente em apresentações com muitas imagens. Com essa macro, você pode redimensionar sem esforço todas as imagens da sua apresentação. Vamos nos aprofundar e ver como você pode criar essa macro simples e melhorar o fluxo de trabalho da sua apresentação.

Como dimensionar imagens em apresentações com uma macro do ONLYOFFICE

Criação da 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.`
        );
      }
    });
  };

Começamos definindo uma função resizeImg(), que é responsável por redimensionar as imagens. A função recebe quatro parâmetros: uma matriz de imagens, a largura desejada, a altura desejada e o índice do slide atual.

A largura e a altura inseridas são convertidas de milímetros para EMUs (English Metric Units) ou Unidades Métricas Inglesas, que são passadas como parâmetros para o método SetSize(). O método SetSize() define o tamanho de cada imagem de acordo com a largura e a altura inseridas.

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

Em seguida, vem a parte principal da macro. Começamos recuperando a apresentação ativa usando o método GetPresentation() (armazenado na variável oPresentation) e, em seguida, a contagem de slides usando o método GetSlidesCount() (armazenado na variável slidesCount).

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

Em seguida, definimos a largura e a altura desejadas para as imagens em milímetros (mm). Você pode modificar esses valores de acordo com suas necessidades.

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

Se a apresentação não tiver slides, registraremos um aviso e interromperemos a execução da macro.

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

Em seguida, usamos um loop for para iterar por todos os slides. Para cada iteração, recuperamos todas as imagens no slide usando o método GetAllImages().

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

Se o slide não tiver imagens, registraremos um aviso e passaremos para o próximo slide.

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

Depois de garantirmos que as imagens estão de fato presentes no slide, o método resizeImg() é chamado. Passamos a matriz de todas as imagens no slide, seguida da altura, da largura e do índice do slide atual.

O código macro completo

Aqui está o código de toda a macro:

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

Agora, vamos ver o desempenho da nossa macro.

Era isso! Uma macro simples que permite redimensionar todas as imagens em sua apresentação com apenas um clique de um botão. A API ONLYOFFICE é uma ferramenta poderosa, capaz de lidar com uma variedade de tarefas e abrir possibilidades infinitas para o desenvolvimento de mais macros e plug-ins. Com essa API, você pode liberar todo o poder do ONLYOFFICE para aumentar sua produtividade e otimizar seus fluxos de trabalho.

Se tiver alguma dúvida ou conceito inovador, recomendamos que você entre em contato conosco. Valorizamos sua opinião e esperamos poder colaborar com você. Boa sorte em seus esforços exploratórios!

Crie sua conta gratuita no ONLYOFFICE

Visualize, edite e colabore em documentos, planilhas, slides, formulários e arquivos PDF online.