node.js - Node js,将pdfkit管道传输到内存流

标签 node.js memorystream pdfkit

我正在使用 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/

相关文章:

mysql - 使用node.js将数据从html表单发送到mysql表

node.js - 有没有办法为 Meteor 指定 Mongo 数据库名称?

C# 更改上传图像的 dpi

javascript - PDFKit:PNG 的未知图像格式错误

javascript - Node.js - 将 Canvas 保存为图像 [适用于使用 Amazon S3 的 Heroku 托管应用程序]

node.js - 如何通过 API 发布要点(非匿名)

c# - 如何正确地对该方法进行单元测试?

c# - 无法创建 MemoryStream

cocoa - 是否可以不在使用 PDFKit 生成的 PDF 中嵌入字体?

javascript - PDFMake 如何将文本放在图像上