Я использую pdfjs для чтения файла PDF и получения его страниц в виде изображений.После того, как все изображения загружены, мне нужно вызвать ajax для отправки и получения подробностей с сервера.Код для перебора страниц в pdf взят здесь: https://ourcodeworld.com/articles/read/405/how-to-convert-pdf-to-text-extract-text-from-pdf-with-javascript
У меня проблемы с написанием синтаксиса для обещания, которое будет вызывать функцию ajax после получения всех необходимых деталей, упомянутых выше.
Вот мой код:
getDataUrlsAndSizesFromPdf(file).then(proceedAndCheckOnServer(file));
const getDataUrlsAndSizesFromPdf = function(file) {
PDFJS.disableWorker = true;
fileReader = new FileReader();
fileReader.readAsArrayBuffer(file);
return new Promise(function(resolve, reject) {
fileReader.onload = function(ev) {
PDFJS.getDocument(fileReader.result).then(function (pdf) {
var pdfDocument = pdf;
var pagesPromises = [];
for (var i = 0; i < pdf.pdfInfo.numPages; i++) {
var pageNum = i + 1;
pagesPromises.push(getImageUrl(pageNum, pdfDocument));
}
Promise.all(pagesPromises).then(function () {
console.log(pdfPagesInfo);
resolve();
}, function () {
console.log('failed');
reject();
});
}, function (reason) {
console.error(reason);
});
}
});
}
function getImageUrl() {
return new Promise(function (resolve, reject) {
PDFDocumentInstance.getPage(pageNum).then(function (pdfPage) {
var scale = 1;
var viewport = pdfPage.getViewport(scale);
var canvas = document.getElementById('dummy-canvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
var task = pdfPage.render({canvasContext: context, viewport: viewport})
task.promise.then(function(){
var sizesArr = {
height : viewport.height,
width : viewport.width
}
pdfPagesInfo.sizes[pageNum.toString()] = sizesArr
pdfPagesInfo.images[pageNum.toString()] = canvas.toDataURL('image/jpeg');
resolve();
});
});
});
}
function proceedAndCheckOnServer() {
....
}
То, что я хочу, - это "continueAndCheckOnServer ()", который будет выполнен, когда все детали были извлечены из "getImageUrl ()".Но в настоящее время выполнение напрямую переходит к «progressAndCheckOnServer ()», не дожидаясь разрешения обещания из «getDataUrlsAndSizesFromPdf».Я новичок в обещаниях JavaScript.Пожалуйста, помогите мне с синтаксисом.