Comment mettre à l’échelle des images dans une présentation avec la macro ONLYOFFICE

19 septembre 2024By Dasha

Lorsque vous travaillez avec des images dans des présentations, il arrive que l’ajustement manuel de la taille de chaque image prenne beaucoup de temps, en particulier dans les présentations comportant un grand nombre d’images. Avec cette macro, vous pouvez redimensionner sans effort toutes les images de votre présentation. Voyons maintenant comment vous pouvez créer cette macro simple et améliorer le flux de travail de votre présentation.

An ONLYOFFICE macro for Presentations to scale your images

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

Nous commençons par définir la fonction resizeImg(), qui est chargée de redimensionner les images. La fonction prend quatre paramètres : un ensemble d’images, la largeur et la hauteur souhaitées, ainsi que l’index de la diapositive en cours.

La largeur et la hauteur saisies sont converties de millimètres en UEM (unités métriques anglaises), qui sont ensuite transmises comme paramètres à la méthode SetSize(). La méthode SetSize() définit la taille de chaque image en fonction de la largeur et de la hauteur saisies.

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

Ensuite, nous passons à la partie principale de la macro. Nous commençons par récupérer la présentation active à l’aide de la méthode GetPresentation() (stockée dans la variable oPresentation), puis le nombre de diapositives à l’aide de la méthode GetSlidesCount() (stockée dans la variable slidesCount).

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

Ensuite, nous définissons la largeur et la hauteur souhaitées pour les images en millimètres (mm). Vous pouvez modifier ces valeurs en fonction de vos besoins.

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

Si la présentation n’a pas de diapositives, nous enregistrons un avertissement et arrêtons l’exécution de la macro.

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

Ensuite, nous utilisons une boucle for pour parcourir toutes les diapositives. Pour chaque itération, nous récupérons toutes les images de la diapositive à l’aide de la méthode GetAllImages().

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

Si la diapositive ne contient pas d’images, nous enregistrons un avertissement et passons à la diapositive suivante.

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

Une fois que nous nous sommes assurés que les images sont bien présentes sur la diapositive, la méthode resizeImg() est appelée. Nous transmettons le tableau de toutes les images de la diapositive, suivi de la hauteur, de la largeur et de l’index de la diapositive actuelle.

Code complet de la macro

Voici le code complet de la 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);
  }
})();

Voyons maintenant comment fonctionne notre macro.

Et voilà ! Une simple macro qui vous permet de redimensionner toutes les images de votre présentation d’un simple clic. L’API ONLYOFFICE est un outil puissant, capable de gérer une grande variété de tâches et d’ouvrir des possibilités infinies pour développer d’autres macros et plugins. Avec cette API, vous pouvez exploiter toute la puissance d’ONLYOFFICE pour améliorer votre productivité et rationaliser vos flux de travail.

Si vous avez des questions ou des concepts innovants, nous vous encourageons à les partager avec nous. Nous apprécions votre contribution et nous nous réjouissons de collaborer avec vous. Nous vous souhaitons bonne chance dans vos projets exploratoires !

Créez votre compte ONLYOFFICE gratuit

Affichez, modifiez et coéditez des documents texte, feuilles de calcul, diapositives, formulaires et fichiers PDF en ligne.