2014-01-12 34 views
0

我会产生的Node.js+的NodeJS渲染Phantomjs从PDF可变

某些PDF文件我会生成它从HTML变量开始。 (我生成它与ejs) 我安装了桥,我做了一些测试,但有些东西不好。

如果我尝试从http://网址生成PDF的工作。

var phantom = require('phantom'); 
var pdffile =__dirname+'/test.pdf'; 

phantom.create(function(ph) { 
    ph.createPage(function(page) { 
    page.open('http://www.google.com',function(err,status){ 
     page.render(pdffile, function(err){ 
     ph.exit(); 
     }); 
    }); 
    }); 
}); 

,如果我有一个HTML成可变尝试.... 这个例子的工作原理:

var phantom = require('phantom'); 
var pdffile =__dirname+'/test.pdf'; 
var content = '<html><head></head><body><h1>Hello World</h1><p>my paragraph</p></body></html>'; 

phantom.create(function(ph) { 
    ph.createPage(function(page) { 
    page.set('content', content); 
page.render(pdffile, function(err){ 
     console.log(err); 
     ph.exit(); 
    }); 
    }); 
}); 

但是...我不明白为什么这个后续不起作用

var ejs = require('ejs'); 
var fs = require('fs'); 
var phantom = require('phantom'); 
var pdffile =__dirname+'/test.pdf'; 
var str = fs.readFileSync(__dirname + '/template.ejs', 'utf8'); 
var params = {id:2423432}; 
var html = ejs.render(str, params); 
var content = '<html><head></head><body>'+html+'</body></html>'; 

phantom.create(function(ph) { 
    ph.createPage(function(page) { 
    page.set('content', content); 
page.render(pdffile, function(err){ 
     console.log(err); 
     ph.exit(); 
    }); 
    }); 
}); 

EJS渲染模板文件的内容转换成变种,但没有被phantomjs渲染。 我也没有收到错误信息,脚本停止并且没有生成PDF文件。

没有人能帮助我?

回答

1

如果你有什么主要工作,可能会有计时问题。尝试将render置于pageonLoadFinished处理程序中。

所以,您的样品将成为:

ph.createPage(function(page) { 
    page.onLoadFinished = function(){ 
     page.render(pdffile); 
     ph.exit(); 
    }; 
    page.set('content', content); 
    }); 
    }); 

你可以看到一个类似的问题和示例代码在这里:PhantomJS - Rendering fails to show all images

+0

感谢您的建议,将尽快 – Zauker

+0

尝试在哪里节点在这个答案? – Murilo