Angular/Typescript 以编程方式将图像(blob)复制到剪贴板

ach*_*dir 6 clipboard blob image typescript angular

在 Angular 7 应用程序中,我们使用html-to-image将 HTML 块渲染为 png,我们使用file-saver保存该图像。

    htmlToImage.toBlob(element).then(function (blob) {
      saveAs(blob, `image.png`);
    });
Run Code Online (Sandbox Code Playgroud)

这运行良好,但业务要求是将图像放入剪贴板,以便可以将其粘贴到另一个工具(Word、Excel...)中。

已经对Async Clipboard API进行了一些谷歌搜索,但似乎并非所有浏览器都支持该 API。

是否有任何解决方法可以在不依赖剪贴板 API 的情况下实现此目的?

Den*_*er9 3

您最好的选择确实是异步剪贴板 API,它现在越来越多的浏览器支持。该文章有一个示例准确地展示了如何使用它:

try {
  const imgURL = '/images/generic/file.png';
  const data = await fetch(imgURL);
  const blob = await data.blob();
  await navigator.clipboard.write([
    new ClipboardItem({
      [blob.type]: blob
    })
  ]);
  console.log('Image copied.');
} catch (err) {
  console.error(err.name, err.message);
}
Run Code Online (Sandbox Code Playgroud)