Node.js Webshot无法与PowerBI一起使用,因为Phantom.js不支持WebGL

时间:2019-04-30 18:13:24

标签: javascript node.js phantomjs powerbi

此问题(某种)是对this SO question from awhile back.的后续操作

我已经成功安装并测试了Webshot.js,它实际上很棒!除指定目的外,所有内容均适用。我正在截取公开/已发布的PowerBI报告的屏幕截图。它们是空白。总是。

我的代码:

webshot('https://app.powerbi.com/view?r=ReallyLongURLKey', 
    './workdammit.png', function(err) {
  if (err) return console.log(err);
  console.log('Screenshot taken!');
});

我搞砸了很多设置,允许很长的renderDelay,错误处理,屏幕尺寸调整等等。什么都没用,我能得到的最好结果是硬编码的页脚减去我实际想要的所有图形内容。

The image, all blank save the footer.

我迷路了,直到遇到顶部链接的StackOverflow问题。 Webshot.js基于不支持WebGL的Phantom.js。猜猜PowerBI用什么来渲染他们的图形。 WebGL

我想从kellyfelkins剧本中抽出一页,但由于我们的问题和出发点并不完全相同,因此我不确定如何处理此变通方法,甚至从哪里开始。

由于缺少更好的用词,是否有办法“强制”截图?也许在Webshot中提供模仿兼容网页的设置?完全使用其他图书馆吗?

1 个答案:

答案 0 :(得分:0)

我发现了一种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;
  }
});