-
-
Save javan/2956700 to your computer and use it in GitHub Desktop.
// | |
// Example usage: phantomjs screenshot.js http://yahoo.com /tmp/yahoo.png | |
// | |
var system = require('system'); | |
var url = system.args[1]; | |
var filename = system.args[2]; | |
var page = new WebPage(); | |
page.open(url, function (status) { | |
page.render(filename); | |
console.log(filename) | |
phantom.exit(); | |
}); |
Yeah I was thinking it'd be nice and simple to shell out to phantomjs from a Node.js server as a Node Stream and pipe it directly into the response without writing any files. Cheap http://url2png.com/
I don't think page.render()
will give you back a stream, but maybe it's possible with a little hacking. I'm new to PhantomJS.
Yes the docs for Page#render say it puts the image data in a buffer and then save it to file. It'd be awesome to have access to that buffer in the API. Or just dump the data to standard out. Also useful if you wanted to for example pipe it to ImageMagick and the like for further processing.
That might do it.
Yup. Built the 1.6 branch and that works.
page.open(url, function (status) {
console.log(page.renderBase64('PNG'))
phantom.exit();
});
So now I in a node server I can spawn this as a child process, listen to it's 'data' event, encode it back to binary and pipe it to the HTTP response. Obviously sending caching headers and caching on Cloudfront, Varnish, etc.
Voila!
@ismasan rad!
Hi,
I need to generate PDF instead of the image file. When i tried with 'PDF' to renderBase64, it doesn't work. Thanks.
I think you could read the rendered file back in and write it to stdout. http://code.google.com/p/phantomjs/wiki/Interface#Filesystem_Module