1 // Render Multiple URLs to file
3 var RenderUrlsToFile, arrayOfUrls, system;
5 system = require("system");
9 @param array of URLs to render
10 @param callbackPerUrl Function called after finishing each URL, including the last URL
11 @param callbackFinal Function called after finishing everything
13 RenderUrlsToFile = function(urls, callbackPerUrl, callbackFinal) {
14 var getFilename, next, page, retrieve, urlIndex, webpage;
16 webpage = require("webpage");
18 getFilename = function() {
19 return "rendermulti-" + urlIndex + ".png";
21 next = function(status, url, file) {
23 callbackPerUrl(status, url, file);
26 retrieve = function() {
28 if (urls.length > 0) {
31 page = webpage.create();
36 page.settings.userAgent = "Phantom.js bot";
37 return page.open("http://" + url, function(status) {
40 if (status === "success") {
41 return window.setTimeout((function() {
43 return next(status, url, file);
46 return next(status, url, file);
50 return callbackFinal();
58 if (system.args.length > 1) {
59 arrayOfUrls = Array.prototype.slice.call(system.args, 1);
61 console.log("Usage: phantomjs render_multi_url.js [domain.name1, domain.name2, ...]");
62 arrayOfUrls = ["www.google.com", "www.bbc.co.uk", "www.phantomjs.org"];
65 RenderUrlsToFile(arrayOfUrls, (function(status, url, file) {
66 if (status !== "success") {
67 return console.log("Unable to render '" + url + "'");
69 return console.log("Rendered '" + url + "' at '" + file + "'");
72 return phantom.exit();