Wie man Bilder in Präsentationen mit einem ONLYOFFICE-Makro skaliert

19 September 2024By Ksenija

Bei der Arbeit mit Bildern in Präsentationen gibt es Szenarien, in denen das manuelle Anpassen der Größe jedes einzelnen Bildes zeitaufwändig werden kann, insbesondere bei Präsentationen mit vielen Bildern. Mit diesem Makro können Sie mühelos die Größe aller Bilder in Ihrer Präsentation ändern. Lassen Sie uns eintauchen und sehen, wie Sie dieses einfache Makro erstellen und Ihren Präsentations-Workflow verbessern können.

An ONLYOFFICE macro for Presentations to scale your images

Erstellung des Makros

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

Wir beginnen mit der Definition einer Funktion resizeImg(), die für die Größenänderung der Bilder zuständig ist. Die Funktion benötigt vier Parameter: ein Array (array) von Bildern, die gewünschte Breite (width), die gewünschte Höhe (height) und den Index (index) der aktuellen Folie.

Die eingegebene Breiteund Höhe werden von Millimetern in EMU (English Metric Units / Englische metrische Einheiten) umgerechnet, die dann als Parameter an die Methode SetSize() übergeben werden. Die Methode SetSize() setzt die Größe jedes Bildes auf die eingegebene Breite und Höhe.

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

Nun kommt der Hauptteil des Makros. Zunächst wird die aktive Präsentation mit der Methode GetPresentation() abgerufen (gespeichert in der Variablen oPresentation) und dann die Anzahl der Folien mit der Methode GetSlidesCount() (gespeichert in der Variablen slidesCount).

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

Dann legen wir die gewünschte Breite und Höhe der Bilder in Millimetern (mm) fest. Sie können diese Werte nach Ihren Bedürfnissen ändern.

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

Wenn die Präsentation keine Folien enthält, wird eine Warnung ausgegeben und die Ausführung des Makros abgebrochen.

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

Als nächstes verwenden wir eine for-Schleife, um alle Folien zu durchlaufen. Bei jeder Iteration rufen wir mit der Methode GetAllImages() alle Bilder auf der Folie ab.

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

Wenn die Folie keine Bilder enthält, wird eine Warnung ausgegeben und zur nächsten Folie übergegangen.

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

Nachdem wir sichergestellt haben, dass die Bilder tatsächlich auf der Folie vorhanden sind, wird die Methode resizeImg() aufgerufen. Wir übergeben das Array mit allen Bildern auf der Folie, gefolgt von der Höhe, der Breite und dem Index der aktuellen Folie.

Der vollständige Makro-Code

Hier ist der Code für das gesamte Makro:

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

Nun wollen wir sehen, wie unser Makro funktioniert.

Das war’s! Ein einfaches Makro, mit dem Sie die Größe aller Bilder in Ihrer Präsentation mit nur einem Mausklick ändern können. Die ONLYOFFICE API ist ein leistungsstarkes Tool, das eine Vielzahl von Aufgaben bewältigen kann und unendlich viele Möglichkeiten für die Entwicklung weiterer Makros und Plugins eröffnet. Mit dieser API können Sie das volle Potenzial von ONLYOFFICE ausschöpfen, um Ihre Produktivität zu steigern und Ihre Arbeitsabläufe zu optimieren.

Wenn Sie Fragen oder innovative Konzepte haben, können Sie uns diese gerne mitteilen. Wir schätzen Ihren Input und freuen uns auf die Zusammenarbeit mit Ihnen. Wir wünschen Ihnen viel Erfolg bei Ihren Versuchen!

Erstellen Sie Ihr kostenloses ONLYOFFICE-Konto

Öffnen und bearbeiten Sie gemeinsam Dokumente, Tabellen, Folien, Formulare und PDF-Dateien online.