Я использую Mozilla PDF.js модуль в Promise
для преобразования каждой страницы PDF в изображение JPG.Мой код создает изображения файлов с помощью модуля fs
, и он используется как Promise
с функцией promisify
в модуле utils
.На данный момент код работает отлично, но я поместил функцию Resolve
после, и она не запускается, а Promise
зависает.Куда мне положить разрешение?
Я пытался в конце функции, но я боюсь, что способ обработки Promise
не полностью выполнен, и яостановка, потому что реализация Promise
, которую мне пришлось сделать, чтобы заставить работать модуль PDF.js
const CanvasFactory = require('./../../lib/canvas/canvas');
const pdfjsLib = require('./../../lib/pdf.js/node_modules/pdfjs-dist');
const fs = require('fs');
const { promisify } = require('util');
const writeFile = promisify(fs.writeFile);
const convertPDF2PNG = (pdfFilePath) => new Promise((resolve, reject) => {
const loadingTask = pdfjsLib.getDocument(pdfFilePath);
loadingTask.promise.then((pdf) => {
const maxPages = pdf.numPages;
const convertPDFPromises = [];
for (let i = 1; i <= maxPages; i += 1) {
const page = pdf.getPage(i);
convertPDFPromises.push(page.then(page => {
const viewport = page.getViewport({ scale: 1.0 });
const canvasFactory = new CanvasFactory();
const canvasAndContext = canvasFactory.create(viewport.width, viewport.height);
const renderContext = {
canvasContext: canvasAndContext.context,
viewport,
canvasFactory,
};
const renderTask = page.render(renderContext);
renderTask.promise.then(() => {
const image = canvasAndContext.canvas.toBuffer();
writeFile(`temporal/output${i}.jpg`, image)
.then(() => {
// TODO: add query to insert images in Database
console.log(`File ${i} added`);
})
.catch(writeErr => {
console.error(writeErr)
reject(writeErr);
});
})
.catch(err => {
console.error(err);
reject(err);
});
}));
}
})
.catch(reason => {
console.error(reason);
reject(reason);
});
resolve();
});
Это ответы, которые я получаю на консоли
File 2 added
File 3 added
File 1 added
Я хочу знать, почему Promise
не разрешается.