我正在使用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");
}
答案 0 :(得分:0)
我只需更改以下内容即可使代码按预期工作:
var blob = new Blob(file.data, {type: "application/pdf"});
到
var blob = new Blob([file.data], {type: "application/pdf"});