您可以将PDFKit生成的PDF插入MongoDB集合吗?

时间:2017-03-14 23:30:57

标签: javascript node.js mongodb meteor pdfkit

我正在使用PDFKit库生成PDF,我想将生成的PDF插入到MongoDB集合中。在客户端,用户应该能够看到集合中的文件列表,并选择下载其中一个文件。

截至目前,我将PDF作为Uint8Array保存在集合中,然后我可以点击前端的文件进行下载。

但是,我的问题是该文件似乎已损坏。它不会在Adobe Reader或Chrome中打开。 我已经尝试将它保存到带有和没有PDFKits压缩的集合中。

这可能吗?或者我对此有一个糟糕的方法。
对此有任何帮助都很棒,并提前感谢!

服务器端
这里的大多数代码都基于this post on the PDFKit GitHub

  var doc = new PDFDocument();
  var stream = require('stream');
  var converter = new stream.PassThrough();
  doc.pipe(converter);

  var data = [];
  converter.on('data', function(chunk) {
    data.push(chunk);
  });

  converter.on('end',  Meteor.bindEnvironment( function () {
    var buffer = Buffer.concat(data);
    PdfFiles.insert({ data:buffer, userID:userId });
  }));

  // Adding content to the PDF

  doc.end();

客户端

'click .downloadPDF': function (event) {
    event.preventDefault();

    var file = UserFiles.findOne({userID:Meteor.userId()});

    var FileSaver = require('file-saver');
    var blob = new Blob(file.data, {type: "application/pdf"});
    FileSaver.saveAs(blob, "AwesomePDF");
}

1 个答案:

答案 0 :(得分:0)

我只需更改以下内容即可使代码按预期工作:

var blob = new Blob(file.data, {type: "application/pdf"});

var blob = new Blob([file.data], {type: "application/pdf"});