ONLYOFFICEマクロでDOCX文書内の画像を拡大縮小する方法

2024年10月11日著者:Denis

先日、プレゼンテーションエディタで画像を拡大縮小するマクロを作成しました。引き続き、ドキュメント内の画像を簡単に修正するマクロを作成します。この簡単なマクロを使えば、画像のリサイズやトリミングなどの調整を行うことができます。では、簡単なマクロの作り方を見てみましょう。

An ONLYOFFICE macro to modify images in documents

マクロの構築

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

まずprocessImage() 関数を定義します。この関数は、forEach() メソッドを使用してドキュメント内の各画像を繰り返し処理します。

        element.SetSize(width * 36000, height * 36000);
        // Optional settings for flipping and wrapping
        //  element.SetVertFlip(true);
        //  element.SetHorFlip(true);
        //  element.SetWrappingStyle("inline");

forEachループの内部では、SetSize() メソッドを使用して、各画像を希望の幅と高さにリサイズします。幅と高さのパラメータはお好みで調整できますが、変更しない場合のデフォルトは 100 x 100 mm です。

ご注意:SetSize() メソッドで使用される寸法は 、英米メートル単位 (EMU) です。ミリメートル単位で指定した width(幅)と height高さ)、36,000 倍して EMU に変換されます変換せずに (mm) で値を渡しても動作しません。

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

次にマクロのメイン部分です。まず、document 変数でドキュメントを取得し、ドキュメント内のすべての画像をallImg 配列に格納します。

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

次に、if ループを実行してallImg 配列が存在し、空でないことを確認します。いずれかの条件が満たされない場合、マクロの実行を停止します。

  processImage(allImg);

最後に、processImage() 関数(上で定義)を呼び出し、allImg 配列を渡します。

マクロコード全体

マクロコード全体は以下のとおりです。

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

では、マクロのパフォーマンスを見てみましょう。

以上 テキスト文書内の画像を微調整できるシンプルなマクロです。ONLYOFFICE APIは強力なツールであり、様々なタスクを処理することができ、さらにマクロやプラグインを開発するための無限の可能性を広げます。このAPIを使えば、ONLYOFFICEのパワーをフルに引き出し、生産性を高め、ワークフローを効率化することができます。

ご質問や革新的なコンセプトがありましたら、ぜひ私たちと共有してください。

 

ONLYOFFICEの無料アカウントを登録する

オンラインでドキュメント、スプレッドシート、スライド、フォーム、PDFファイルの閲覧、編集、共同作業