2

我正在尝试使用 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();
}

datafor是一个可以在 for 循环中正常工作的数组。

问题是 - 上面的函数似乎没有返回承诺。相反,我收到.then() of undefined错误,我认为这是因为函数没有返回任何内容。我究竟做错了什么?

4

1 回答 1

1

尝试这个

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);
        }
    });
}
于 2020-06-19T11:50:12.097 回答