使用PhantomJS渲染网页

时间:2014-10-24 07:00:44

标签: javascript phantomjs html2canvas

是否可以将包含所有计算样式的整个文档的html传递给服务器以获取PhantomJS渲染并保存到PNG? (类似于html2canvas)

我想要实现的是使用PhantomJS截取网页的截图(当前状态)。因此,模态对话框,点击标签等内容都将出现在屏幕截图中。

1 个答案:

答案 0 :(得分:0)

您无法传递计算样式,因为它们不存在于DOM中。应用CSS时,它是DOM节点的属性。为了实现这一点,您需要使服务器可以访问每种样式,例如,当样式表受访问控制时,服务器需要另外登录或类似的东西。但这应该是很少的情况。

发送

可能已经足够了
document.documentElement.outerHTML

到服务器并让PhantomJS呈现收到的HTML

var page = require('webpage').create();
page.onLoadFinished = function(status){
    page.render("page.png");
    phantom.exit();
};
page.content = "received HTML as string"
    .replace(/href="\/\//g, 'href="http://')
    .replace(/href=\/\//g, 'href=http://');

有时资源(样式表)在其URL中缺少协议,但PhantomJS在加载本地页面时需要http协议(设置page.content),否则它将假设URL使用file://而不是{ {1}}。

您可能需要使用http://--ssl-protocol=tlsv1等命令行选项运行PhantomJS。