Node.js Webshot 无法与 PowerBI 一起使用,因为 Phantom.js 不支持 WebGL
Node.js Webshot not working with PowerBI, because WebGL is not supported by Phantom.js
这个问题(有点)是 this SO question from awhile back.
的后续问题
我已经成功安装并测试了 Webshot.js - 它真的很好用!除了指定用途之外的所有东西。我正在截取 public/published PowerBI 报告。他们是空白的。总是。
我的代码:
webshot('https://app.powerbi.com/view?r=ReallyLongURLKey',
'./workdammit.png', function(err) {
if (err) return console.log(err);
console.log('Screenshot taken!');
});
我把设置搞得一团糟,允许非常长的渲染延迟、错误处理、屏幕尺寸调整等等。没有任何效果,我能得到的最好结果是硬编码页脚减去我真正想要的所有图形内容。
直到遇到我在顶部链接的 Whosebug 问题,我才迷路了。 Webshot.js 基于 Phantom.js,不支持 WebGL。猜猜 PowerBI 使用什么来呈现他们的图表。 WebGL.
我想借鉴一下 kellyfelkins 剧本,但我不确定如何处理这个变通办法,甚至不确定从哪里开始,因为我们的问题和起点并不完全相同。
有没有办法 "force" 屏幕截图,因为没有更好的术语?也许为 Webshot 提供一个模仿兼容网页的设置?完全使用不同的库?
我找到了 node-server-screenshot. 形式的解决方案,它具有许多影响渲染延迟、比例、大小和质量的相同设置,并且可以与 PowerBI 和其他使用 WebGL 的 Web 服务一起使用。
例如,一段代码可能如下所示。
var app = require('../Node/node_modules/npm/node_modules/node-server-screenshot/index.js');
app.fromURL("https://yahoo.com", "E:/Website/Test.png",
{ clip: {width: 1600, height: 900 }, scale: 1, waitMilliseconds: 10000, timeout: 60000 }, function (err) {
if (err) {
throw err;
}
});
这个问题(有点)是 this SO question from awhile back.
的后续问题我已经成功安装并测试了 Webshot.js - 它真的很好用!除了指定用途之外的所有东西。我正在截取 public/published PowerBI 报告。他们是空白的。总是。
我的代码:
webshot('https://app.powerbi.com/view?r=ReallyLongURLKey',
'./workdammit.png', function(err) {
if (err) return console.log(err);
console.log('Screenshot taken!');
});
我把设置搞得一团糟,允许非常长的渲染延迟、错误处理、屏幕尺寸调整等等。没有任何效果,我能得到的最好结果是硬编码页脚减去我真正想要的所有图形内容。
直到遇到我在顶部链接的 Whosebug 问题,我才迷路了。 Webshot.js 基于 Phantom.js,不支持 WebGL。猜猜 PowerBI 使用什么来呈现他们的图表。 WebGL.
我想借鉴一下 kellyfelkins 剧本,但我不确定如何处理这个变通办法,甚至不确定从哪里开始,因为我们的问题和起点并不完全相同。
有没有办法 "force" 屏幕截图,因为没有更好的术语?也许为 Webshot 提供一个模仿兼容网页的设置?完全使用不同的库?
我找到了 node-server-screenshot. 形式的解决方案,它具有许多影响渲染延迟、比例、大小和质量的相同设置,并且可以与 PowerBI 和其他使用 WebGL 的 Web 服务一起使用。
例如,一段代码可能如下所示。
var app = require('../Node/node_modules/npm/node_modules/node-server-screenshot/index.js');
app.fromURL("https://yahoo.com", "E:/Website/Test.png",
{ clip: {width: 1600, height: 900 }, scale: 1, waitMilliseconds: 10000, timeout: 60000 }, function (err) {
if (err) {
throw err;
}
});