我正在使用pdfkit生成带有一些自定义内容的pdf,然后将其发送到AWS S3存储桶.
虽然如果我作为一个整体生成文件并上传它完美地工作,但是,如果我想将生成的文件作为八位字节流流式传输,我无法找到任何相关的指针.
我正在寻找nodejs解决方案(或建议).
我会在这里尽力准确.我不会详细介绍pdfKit的nodejs sdk的用法.
如果您希望将生成的pdf作为文件.
var PDFDocument = require('pdfkit'); // Create a document doc = new PDFDocument(); // Pipe it's output somewhere, like to a file or HTTP response doc.pipe(fs.createWriteStream('output.pdf')); doc.text('Whatever content goes here'); doc.end(); var params = { key : fileName, body : './output.pdf', bucket : 'bucketName', contentType : 'application/pdf' } s3.putObject(params, function(err, response) { });
但是如果你想要流式传输(在问题的上下文中说S3桶),那么值得记住的是每个pdfkit实例都是可读的流.
S3期望文件,缓冲区或可读流.所以,
var doc = new PDFDocument(); // Pipe it's output somewhere, like to a file or HTTP response doc.text("Text for your PDF"); doc.end(); var params = { key : fileName, body : doc, bucket : 'bucketName', contentType : 'application/pdf' } //notice use of the upload function, not the putObject function s3.upload(params, function(err, response) { });