В моем api
маршрутизаторе есть функция под названием generatePDF
, целью которой является использование модуля PDFKit для генерации PDF-файла в памяти и отправки клиенту для загрузки вместо отображения только.
In 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.от роутера и связать их?