我正在尝试使用PDFKit生成PDF,然后将其作为base64字符串返回。
这是我的代码:
function buildPDFStructure(data){
let doc = new PDFDocument();
var bufferChunks = [];
doc.on('readable', function () {
// Store buffer chunk to array
bufferChunks.push(doc.read());
});
doc.on('end', ()=> {
var pdfBuffer = Buffer.concat(bufferChunks),
pdfBase64String = pdfBuffer.toString('base64');
// This is a string
return Promise.resolve(pdfBase64String);
});
for(var i=0; i<data.length; i++){
doc.text(data[i].text);
}
doc.end();
}
data
是一个可以很好地for
for循环的数组。
问题是 - 上面的函数似乎没有返回承诺。相反,我收到.then() of undefined
错误,我认为这是因为函数没有返回任何内容。我做错了什么?
答案 0 :(得分:0)
尝试
function buildPDFStructure(data){
return new Promise((resolve, reject) => {
try {
let doc = new PDFDocument();
var bufferChunks = [];
doc.on('readable', function () {
// Store buffer chunk to array
bufferChunks.push(doc.read());
});
doc.on('end', ()=> {
var pdfBuffer = Buffer.concat(bufferChunks),
pdfBase64String = pdfBuffer.toString('base64');
// This is a string
resolve(pdfBase64String);
});
for(var i=0; i<data.length; i++){
doc.text(data[i].text);
}
doc.end();
} catch (e) {
console.error(e);
reject(e);
}
});
}