【问题标题】:Nodejs + Phantomjs render PDF from variableNodejs + Phantomjs 从变量渲染 PDF
【发布时间】:2014-01-31 06:05:56
【问题描述】:

我会在 Node.js 中生成一些 PDF 文件

我会从一个 HTML 变量开始生成它。 (我用ejs生成它) 我已经安装了桥接器,并且我做了一些测试,但有些事情并不顺利。

如果我尝试从 Http:// url 生成 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 将模板文件的内容渲染到 var 中,但 phantomjs 没有渲染任何内容。 我也没有收到错误消息,脚本停止并且没有生成 PDF 文件。

没有人可以帮助我吗?

【问题讨论】:

    标签: node.js pdf pdf-generation phantomjs


    【解决方案1】:

    如果您所拥有的大部分工作正常,则可能存在时间问题。尝试将render 放在onLoadFinished 处理程序中page。

    因此,您的样本将变为:

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

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

    【讨论】:

    • 这个答案的节点在哪里?
    猜你喜欢
    • 2016-11-21
    • 2023-04-03
    • 2018-02-16
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多