您可以将 PDFKit 生成的 PDF 插入到 MongoDB 集合中吗?
Can you insert a PDF generated by PDFKit into a MongoDB collection?
我正在使用 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");
}
我只需更改以下代码即可让代码按预期工作:
var blob = new Blob(file.data, {type: "application/pdf"});
至
var blob = new Blob([file.data], {type: "application/pdf"});
我正在使用 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");
}
我只需更改以下代码即可让代码按预期工作:
var blob = new Blob(file.data, {type: "application/pdf"});
至
var blob = new Blob([file.data], {type: "application/pdf"});