ExpressJS和PDFKit"/>
ExpressJS和PDFKit
在我的api
路由器中,有一个名为generatePDF
的功能,该功能旨在使用PDFKit模块在内存中生成PDF文件并发送给客户端以供下载,而不是仅显示。
在api.js
中:
var express = require('express');
var router = express.Router();
const PDFDocument = require('pdfkit');
router.get('/generatePDF', async function(req, res, next) {
var myDoc = new PDFDocument({bufferPages: true});
myDoc.pipe(res);
myDoc.font('Times-Roman')
.fontSize(12)
.text(`this is a test text`);
myDoc.end();
res.writeHead(200, {
'Content-Type': 'application/pdf',
'Content-disposition': 'attachment;filename=test.pdf',
'Content-Length': 1111
});
res.send( myDoc.toString('base64'));
});
module.exports = router;
这不起作用。错误消息是(node:11444) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
。
我该如何解决该问题并使它正常工作?
此外,一个相关的问题是我如何将PDF生成的业务逻辑与路由器分开并进行链接?
回答如下:假定正文是您要发送的内容,请像这样使用它:
res.writeHead(200, {
'Content-Length': Buffer.byteLength(body),
'Content-Type': 'application/pdf',
'Content-disposition': 'attachment;filename=test.pdf',})
.end(body);
更多推荐
ExpressJS和PDFKit
发布评论