nodejs spawn child process ruby​​ prawn pdf

时间:2014-03-13 04:19:45

标签: ruby node.js pdf-generation prawn

我有以下代码在Node中生成我的Child Process。而且效果很好。如果我只是返回文本,它会直接下载。当我试图返回pdf时,一切都出错了。感谢

nodejs代码

exports.generateReportCard = function(req,res){
  var jsonData = '{ property: abc }';
  var spawn = require('child_process').spawn;
  var child = spawn('ruby', ['utilities/schedule.rb', jsonData]);
  var pdf = '';

  var chunks = [];

  child.stdout.on('data', function(data) {
    // insert error check here...
    chunks.push(data);
  });
  child.on('close', function() {
    var pdf = Buffer.concat(chunks);
    res.setHeader('Content-Type', 'application/text');
    res.send(pdf);
  });
};

调用的ruby文件非常简单。但我似乎无法获得PDF格式的二进制文件。

require 'rubygems' 
require 'prawn'

pdf = Prawn::Document.new
pdf.text "Hello World"
puts pdf.render_file "assignment.pdf"

2 个答案:

答案 0 :(得分:0)

您似乎希望捕获标准输出并将其作为有效负载发送到客户端。但是,捕获的内容是PDF文档,

puts pdf.render_file "assignment.pdf"

pdf.render_file(...)nil)的返回值打印到标准输出,实际上什么都没有。

您可以使用render方法,因为您不需要将内容存储到文件中。

require 'rubygems' 
require 'prawn'

pdf = Prawn::Document.new
pdf.text "Hello World"
pdf.render(STDOUT)

答案 1 :(得分:0)

感谢您让我走上正确的道路。

这是有效的红宝石

pdf = Prawn::Document.new
pdf.text "Hello World"
puts pdf.render