Como dimensionar imagens em documentos docx com uma macro do ONLYOFFICE

11 outubro 2024By Klaibson

Recentemente, criamos uma macro para dimensionar imagens em nosso Presentation Editor. Continuando com nossas macros de modificação de imagens, criaremos uma macro para modificar facilmente as imagens nos documentos. Essa macro simples nos permitirá fazer ajustes como redimensionamento de imagens, corte e muito mais. Vamos ver como criar essa macro simples.

Como dimensionar imagens em documentos docx com uma macro do ONLYOFFICE

Criação da macro

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

Começamos definindo a função processImage(), que lida com a modificação de imagens no documento. Essa função itera sobre cada imagem no documento usando o 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 do loop forEach, usamos o método SetSize() para redimensionar cada imagem para a largura e altura desejadas. Você pode ajustar os parâmetros de largura e altura de acordo com sua preferência, mas, se não forem alterados, o padrão será 100 x 100 mm.

Observação: as dimensões usadas no método SetSize() estão em unidades métricas inglesas (EMUs). A largura e a altura que você fornece em milímetros são multiplicadas por 36.000 para convertê-las em UMEs. Passar os valores em (mm) sem conversão não funcionará.

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

Em seguida, vem a parte principal da macro. Começamos recuperando o documento na variável document e armazenando todas as imagens do documento na matriz allImg.

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

Em seguida, executamos um loop if para garantir que a matriz allImg exista e não esteja vazia. Se uma das condições não for atendida, interrompemos a execução da macro.

  processImage(allImg);

Por fim, chamamos a função processImage() (definida acima), passando a matriz allImg.

O código completo da 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); })();

Agora, vamos ver o desempenho da nossa macro.

Era isso! Uma macro simples que permite ajustar as imagens em seus documentos de texto. 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ê compartilhe 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.