无头node.js JavaScript浏览器的截图function?

是否有任何node.js的无头浏览器支持将渲染后的页面转储到文件中? 我知道phantomjs支持渲染到一个文件,但它不能在node.js上运行。 我知道zombie.js是一个node.js无头浏览器,但它不支持渲染到一个文件。

我怀疑你会发现任何可以工作的东西以及phantomjs。 我只是将渲染视为asynchronous后端进程,并在主要node.js进程的subprocess中执行phantom并称之为一天。 渲染一个网页很难,因为幻影是基于WebKit,它实际上可以做到这一点。 我不认为会有一个节点库,可以呈现一个网页的graphics文件,而不是build立在现有的浏览器渲染引擎。 但是也许有一天,phantomjs将会更加无缝地集成到节点中。

尝试噩梦 ,它使用电子,它比phantomjs快,它的API容易,使用现代ES6的JavaScript。

这可能看起来像一个有点开销的解决scheme…

您可以使用带有MozRepl插件的Mozilla Firefox。 基本上这个插件为您提供了一个到您的Firefox的Telnet端口,允许您从外部控制浏览器。 你可以打开url,截图等。运行与Xvfb服务器的Firefox将运行在无头模式。

现在你只需要用node.js从外面控制浏览器。 我见过一些例子,其中有人在Fi​​refox的chrome.js中实现了一个类似于http的接口。 所以你可以运行一个http命令来获取截图。 然后你可以使用来自node.js的http调用。 这可能看起来很奇怪,但实际上却可能适合你。

我正在使用Perl Mojolicious在asynchronous模式下运行一个稍微修改过的版本来触发屏幕截图。 但是,有一个小问题。 当需要插件时,它们可以工作,但是Flash通常在可见区域被激活时,这种情况不会发生,所以电影/闪光灯可能不会被初始化。

您可能会发现这有帮助,虽然它不是特定于JavaScript。

有一个名为“ wkhtmltopdf ”的基于webkit的工具,我了解包括使用QT的web-kit小部件的JavaScript支持。 它以PDF格式输出一个可视化的表示(如果你愿意的话)。

FWIW,这里也有PHP的绑定: php-wkthmltox

有一个叫Node-Chimera的项目。 虽然它不像Phantomjs那样成熟,但它具有您提到的所有function:它在本机Nodej上运行,并允许您将页面呈现为文件。 存储库在这里: https : //github.com/deanmao/node-chimera 。 它有一些例子来完成你所需要的。

Chrome开发团队已经发布了可以在节点中使用的Puppeteer 。 它使用Chrome与无头的选项。