【发布时间】:2021-11-25 22:12:42
【问题描述】:
我有一个包含多个 canvas html 元素的页面。该网站实际上是用 angularjs 构建的,上面显示了在 Qlik 中创建的图表。我正在尝试获取在浏览器上呈现为画布元素的各个图表的屏幕截图。
使用https://github.com/tsayen/dom-to-image,我可以使用以下代码获取第一张图表的屏幕截图:
var node = document.getElementById(divToPrint);
domtoimage.toPng(node)
.then(function (dataUrl) {
var link = document.createElement('a');
link.download = divToPrint + '.png';
link.href = dataUrl;
link.click();
});
但是,对于所有其他图表,我收到以下错误:
Uncaught (in promise) Event {isTrusted: true, type: "error", target: null, currentTarget: null, eventPhase: 0, …}
Promise.then (async)
我发现有人已经在 github 上发布了这个但没有答案: https://github.com/tsayen/dom-to-image/issues/181
代码中是否缺少某些内容?
【问题讨论】:
-
我从未使用过该库,但似乎您应该使用 dataUrl 作为图像元素的 src。它是一个“数据:”URL,即它是构成图像的实际字节的编码。我通过查看项目页面上的示例得出这个结论。
-
这将允许用户下载图像。项目页面上的示例是 JPEG 图像,我使用它保存为 PNG 图像:保存并下载压缩的 JPEG 图像:domtoimage.toJpeg(document.getElementById('my-node'), { quality: 0.95 }) 。然后(函数(dataUrl){ var link = document.createElement('a'); link.download = 'my-image-name.jpeg'; link.href = dataUrl; link.click(); });跨度>
-
stackoverflow.com/questions/48926412/… - 它可能是相关的,但我不熟悉 Promise 对象。
-
github issue 已经关闭了,请问他们是怎么解决的?
-
你用的是qlikview还是qliksense?
标签: javascript angularjs promise qlikview qliksense