我正在使用 pdfkit在我的 Node 服务器上,通常创建 pdf 文件,然后将它们上传到 s3。
问题是 pdfkit 示例将 pdf 文档通过管道传输到 Node 写入流中,该流将文件写入磁盘,我按照示例进行操作并且工作正常,但是我现在的要求是将 pdf 文档传输到内存流而不是而不是将其保存在磁盘上(无论如何我正在上传到 s3)。
我遵循了一些 Node 内存流程序,但它们似乎都不适用于我的 pdf 管道,我可以将字符串写入内存流。
所以我的问题是:如何将 pdf 工具包输出通过管道传输到内存流(或类似的东西),然后将其作为对象读取以上传到 s3?
var fsStream = fs.createWriteStream(outputPath + fileName);
doc.pipe(fsStream);
最佳答案
2020 年的更新答案。无需引入新的内存流,因为“PDFDocument 实例是可读的 Node 流”。
您可以使用 get-stream
包来轻松等待文档完成,然后再将结果返回给调用者。
https://www.npmjs.com/package/get-stream
const PDFDocument = require('pdfkit')
const getStream = require('get-stream')
const pdf = () => {
const doc = new PDFDocument()
doc.text('Hello, World!')
doc.end()
return await getStream.buffer(doc)
}
// Caller could do this:
const pdfBuffer = await pdf()
const pdfBase64string = pdfBuffer.toString('base64')
如果您的需求不同,您不必返回缓冲区。 get-stream 自述文件提供了其他示例。
关于node.js - Node js,将pdfkit管道传输到内存流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35658438/