2013-10-15 91 views
1

我有這phantomjs代碼,這應該呈現/保存從一個url到pdf文件的內容;Phantomjs無法渲染與render_multi_url.js的網址

在代碼的最後,我有這樣的數組:

arrayOfUrls = ["http://192.168.0.49/a/view/id/6", "http://192.168.0.49/a/view/id/5", "http://192.168.0.49/a/view/id/4"]; 

和錯誤是:

Unable to render 'http://192.168.0.49/a/view/id/6' Unable to render 'http://192.168.0.49/a/view/id/5' Unable to render 'http://192.168.0.49/a/view/id/4'

// Render Multiple URLs to file 

var RenderUrlsToFile, arrayOfUrls, system; 

system = require("system"); 

/* 
Render given urls 
@param array of URLs to render 
@param callbackPerUrl Function called after finishing each URL, including the last URL 
@param callbackFinal Function called after finishing everything 
*/ 
RenderUrlsToFile = function(urls, callbackPerUrl, callbackFinal) { 
    var getFilename, next, page, retrieve, urlIndex, webpage; 
    urlIndex = 0; 
    webpage = require("webpage"); 
    page = null; 
    getFilename = function() { 
     return "rendermulti-" + urlIndex + ".pdf"; 
    }; 
    next = function(status, url, file) { 
     page.close(); 
     callbackPerUrl(status, url, file); 
     return retrieve(); 
    }; 
    retrieve = function() { 
     var url; 
     if (urls.length > 0) { 
      url = urls.shift(); 
      urlIndex++; 
      page = webpage.create(); 
      page.viewportSize = { 
       width: 800, 
       height: 600 
      }; 
      page.settings.userAgent = "Phantom.js bot"; 
      return page.open("http://" + url, function(status) { 
       var file; 
       file = getFilename(); 
       if (status === "success") { 
        return window.setTimeout((function() { 
         page.render(file); 
         return next(status, url, file); 
        }), 200); 
       } else { 
        return next(status, url, file); 
       } 
      }); 
     } else { 
      return callbackFinal(); 
     } 
    }; 
    return retrieve(); 
}; 

arrayOfUrls = null; 

if (system.args.length > 1) { 
    arrayOfUrls = Array.prototype.slice.call(system.args, 1); 
} else { 
    console.log("Usage: phantomjs render_multi_url.js [domain.name1, domain.name2, ...]"); 
    arrayOfUrls = ["http://192.168.0.49/a/view/id/6", "http://192.168.0.49/a/view/id/5", "http://192.168.0.49/a/view/id/4"]; 
} 

RenderUrlsToFile(arrayOfUrls, (function(status, url, file) { 
    if (status !== "success") { 
     return console.log("Unable to render '" + url + "'"); 
    } else { 
     return console.log("Rendered '" + url + "' at '" + file + "'"); 
    } 
}), function() { 
    return phantom.exit(); 
}); 

回答

3

你需要寫你的網址像這樣

arrayOfUrls = ["192.168.0.49/a/view/id/6", "192.168.0.49/a/view/id/5", "192.168.0.49/a/view/id/4"]; 

沒有「http://」