问题描述
我只想返回 pdf 以响应我的 Strapi 端点上的 GET 请求。 Strapi 使用 Koa,Strapi 控制器 atm 如下所示:
UPDATE Account Ex
Set[1f9ae786-9aae-4478-8254-3b683804ccfa] = 'New'
WHERE [1f9ae786-9aae-4478-8254-3b683804ccfa] COLLATE sql_latin1_General_CP1_CS_AS = 'NEW' AND 'new'
我认为问题在于 doc.end() 在构建文档之前关闭了流。
解决方法
我能够使用 pdfmake
和缓冲区使其工作。应该与 pdfkit
类似。
const PDFDocument = require('pdfmake');
module.exports = {
async printOne(ctx) {
const printer = new PDFDocument()
const docDefinition = {
content: [
'First paragraph','Another paragraph,this time a little bit longer.'
]
};
const pdfDoc = printer.createPdfKitDocument(docDefinition);
let buffers = [];
pdfDoc.on('data',buffers.push.bind(buffers));
pdfDoc.on('end',() => {
let pdfData = Buffer.concat(buffers);
ctx.set('Content-Type','application/pdf')
ctx.set('Content-disposition',`attachment;filename=docname.pdf`)
ctx.body = pdfData
});
pdfDoc.end();
}
};