javascript - Node.js Webshot 不适用于 PowerBI,因为 Phantom.js 不支持 WebGL
问题描述
我已经成功地安装和测试了 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!');
});
我已经搞砸了很多设置,允许非常冗长的渲染延迟、错误处理、屏幕尺寸调整等等。没有任何效果,我能得到的最好结果是一个硬编码的页脚减去我真正想要的所有图形内容。
在遇到顶部链接的 StackOverflow 问题之前,我迷路了。Webshot.js 基于不支持 WebGL 的 Phantom.js。猜猜 PowerBI 使用什么来呈现他们的图表。WebGL。
我想从 kellyfelkins 剧本中拿出一页,但我不确定如何处理这个变通方法,甚至不确定从哪里开始,因为我们的问题和起点并不完全相同。
由于缺乏更好的术语,有没有办法“强制”截图?也许为 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;
}
});
推荐阅读
- django - Django cron 作业无法连接到 Elastic Beanstalk 上的数据库
- javascript - webpack splitChunks:如何将依赖项合并到命名块中?
- java - Java 库 Graphics2D 不将文本显示为正确的字体
- python - 最后一行带有 :_^5 的 print 函数是什么意思?
- javascript - 如何将编辑器添加到特定选项卡的整个工作表保护?
- qt - QT QVulkanWindow 覆盖小部件
- android - 如何在命令行中为服务应用程序从 C++ 源代码构建 apk 包
- git - 默认情况下 git 跟踪分支
- python - 使用 Pyqt Print 支持但出现错误“对象不可调用”
- java - 为什么我不能从泛型参数访问属性?