我成功实现了 pdf2json 使用 Node 从 url 获取和读取 pdf。
但是,Azure 函数是异步函数,会在执行 pdfPipe.on("pdfParser_dataReady", pdf => {}) 之前完成执行。
我的实现如下
var request = require('request');
var PDFParser = require("pdf2json");
var pdfParser = new PDFParser(this, 1);
var pdfPipe = request({ url: pdfUrl, encoding: null }).pipe(pdfParser);
pdfPipe.on("pdfParser_dataError", err => console.error(err));
pdfPipe.on("pdfParser_dataReady", pdf => {
/// hndle pdfData
});
这在我的机器上的 Node 中运行良好。但我需要将 pdfPipe.on('---', function(){}) 转换为 async 并等待,因为 azure 函数不会等待 pdfPipe 完成。
如何做到这一点?
最佳答案
使用以下方法解决
async function streamToPdf(readableStream) {
return new Promise((resolve, reject) => {
readableStream.on("pdfParser_dataReady", (pdf) => {
resolve(pdf);
});
readableStream.on("pdfParser_dataError", reject);
});
}
然后
var pdfPipe = request({ url: pdfUrl, encoding: null }).pipe(pdfParser);
var pdf = await streamToPdf(pdfPipe);
关于javascript - 使用pdf2json在azure函数中读取pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61498694/