今回は、HTML の特定の要素を画像に変換する方法についてです。
私の場合は、先日投稿した「【React】手書きキャンバスを実装できるライブラリ「react-signature-canvas」」で描画したものを、画像として保存するのに使用しました。
使用した html-to-image ライブラリの GitHub ページはこちらから。
GitHub – bubkoo/html-to-image: ✂️ Generates an image from a DOM node using HTML5 canvas and SVG.
https://github.com/bubkoo/html-to-image
導入方法ですが、まずライブラリを下記コマンドでインストールします。
npm install --save html-to-image
上記コマンドの実行が完了したら、あとは任意の場所に実装していきます。
サンプルコードは下記のとおりです。
import * as htmlToImage from 'html-to-image';
htmlToImage.toSvg(document.getElementById('[画像に変換したい要素のID]'))
  .then(function (dataUrl) {
    // 成功時に実行したい処理を記述する
    // 私の場合はダウンロード処理を実行
    const a = document.createElement('a')
    a.download = 'Image.svg';
    a.href = dataUrl;
    a.click();
  });
成功時には、変換した画像の Base64 データが取得できますので、<img> タグの src に渡して Web ページに表示することもできます。
なお、私は SVG 画像に変換したかったので、htmlToImage.toSvg() を使いましたが、JPEG や PNG 形式に変換することも可能です。
また、画像以外にも、.toBlob() で PNG 画像の BLOB を取得したり、.toCanvas() で <canvas> 要素に変換することも可能です。
こちらはやりたいことに合わせて、適したものを選んでください。
以上、HTML ページの指定した要素を SVG 画像に変換できるライブラリ「html-to-image」のご紹介でした。
ご参考になれば幸いです。