使用PhantomJS将多个页面渲染为pdf文件

我需要使用PhantomJS将多个页面渲染成pdf文件。 一旦PhantomJS渲染一个页面,另一个实例不能被调用,直到完成前一个执行。 我相信它将需要一些types的callback和recursion方法。

以下是呈现单个页面的代码:

someUrl = "https://www.google.com/"; var phantom = require('phantom'); phantom.create(function(ph){ ph.createPage(function(page) { page.open(someUrl, function(){ page.render('google.pdf'); //needs to wait for this to finish ph.exit(); //to call itself for the next url }); }); }); 

你需要两件事recursion:

  • 什么时候停止recursion(在列表中留下的URL减less到0)和
  • 一个build立或减less的值(列表中的URL在每个“迭代”中被取出)。

码:

 var urls = ["http://domain1.tld", "http://domain2.tld/path"]; var phantom = require('phantom'); phantom.create(function(ph){ ph.createPage(function(page) { function render(urls, callback) { if (urls.length == 0) { console.log("Exiting..."); ph.exit(); if (callback) callback(); return; } var url = urls[0]; page.open(url, function(){ page.render('screen_'+url.replace(/[\/:]/g, "_")+'.pdf'); render(urls.slice(1), callback); }); } render(urls); // TODO: use a callback if you need to }); });