在我调用 doc.end() 之前,PDFKIT 不会开始对 http 响应进行流式传输
PDFKIT not starting streaming on http response till I call doc.end()
我正在使用 pdfkit 在运行时生成 pdf 并在 http 响应中返回它以供下载。我可以在浏览器端下载文件,但下载对话框没有立即打开。而是等待 doc.end 被调用。我猜 pdfkit 无法有效地推送流。还有其他人遇到过这个吗?如果是,请指导。
这是我正在尝试的示例代码
exports.testPdfKit = functions.https.onRequest((request, response) => {
//create pdf document
doc.pipe(response);
response.set('Content-Disposition', `attachment;filename=testpdfstream.pdf`);
response.writeHead(200, { 'Content-Type': 'application/pdf' })
const bigText = "some big text"
for (var i = 0; i < 1000; i++) {
console.log('inside iteration -',i)
doc.text(bigText);
doc.addPage();
}
doc.end()
});
我正在 firebase 函数上实现此功能,它在内部使用 expressjs 来处理 http 请求。为了在我这边生成更大的文件,流式传输对我来说是必须的。
HTTP 函数无法流式传输函数的输入或输出。整个请求在一块内存中传递,响应被收集并在一块内存中发送回客户端。两者的最大大小均为 10MB。 Cloud Functions 的这种限制没有解决方法(但它确实可以帮助您更好地扩展系统)。
如果您需要流式传输或 websockets,则需要使用不同的产品,例如应用引擎或计算引擎。
我正在使用 pdfkit 在运行时生成 pdf 并在 http 响应中返回它以供下载。我可以在浏览器端下载文件,但下载对话框没有立即打开。而是等待 doc.end 被调用。我猜 pdfkit 无法有效地推送流。还有其他人遇到过这个吗?如果是,请指导。
这是我正在尝试的示例代码
exports.testPdfKit = functions.https.onRequest((request, response) => {
//create pdf document
doc.pipe(response);
response.set('Content-Disposition', `attachment;filename=testpdfstream.pdf`);
response.writeHead(200, { 'Content-Type': 'application/pdf' })
const bigText = "some big text"
for (var i = 0; i < 1000; i++) {
console.log('inside iteration -',i)
doc.text(bigText);
doc.addPage();
}
doc.end()
});
我正在 firebase 函数上实现此功能,它在内部使用 expressjs 来处理 http 请求。为了在我这边生成更大的文件,流式传输对我来说是必须的。
HTTP 函数无法流式传输函数的输入或输出。整个请求在一块内存中传递,响应被收集并在一块内存中发送回客户端。两者的最大大小均为 10MB。 Cloud Functions 的这种限制没有解决方法(但它确实可以帮助您更好地扩展系统)。
如果您需要流式传输或 websockets,则需要使用不同的产品,例如应用引擎或计算引擎。