Nodejs衍生子进程ruby prawn pdf



我有以下代码来在Node中生成我的子进程。而且效果很好。如果我只是返回文本,它会直接下载。当我试图返回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"

似乎您想要捕获标准输出并将其作为有效负载发送给客户机。然而,捕获的内容旨在成为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)

谢谢你指引我走上正确的道路。

这是工作的ruby

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

最新更新