2014-01-12 36 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