javascript - 使用PDF.js异步加载多个pdf文件时获取总页数

标签 javascript pdf asynchronous async-await pdf.js

我正在使用 pdfjs 加载和合并一些 pdf 文件。我知道如何显示 pdf 文档的页码,但是在合并文件时,我想根据所有 pdf 文档的总页数显示页码。但由于它是异步的,仅使用并递增计数器变量是行不通的。

var actual_page = 1;

(async function loop() {
for (url_item of urls) {
    var loadingTask = pdfjsLib.getDocument(url_item);
        await loadingTask.promise.then(function (pdf) {
            let i = 1;
            while (i <= pdf.numPages) {
                var pageNumber = i;
                pdf.getPage(pageNumber).then(function (page) {
                    //render pdf and print actual_page++ 
                });
            }
        }
    }
}

第一页显示 1,第二页显示 3,2 将出现在第 10 页,依此类推。

提前致谢。

最佳答案

我认为您将需要 Promise.all 或类似的东西才能以正确的顺序从 getPage 获取页面。这可能会让您的页码编号工作正常工作。

var pagePromises = [];

while (i <= pdf.numPages) {
    pagePromises.push(pdf.getPage(i));
    i++;
}

Promise.all(pagePromises).then(function (allPages) {
  allPages.forEach(page => {
    // render pdf and print actual_page++
  });
});

});

关于javascript - 使用PDF.js异步加载多个pdf文件时获取总页数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57497620/

相关文章:

javascript - 路线变更的工兵事件

javascript - 将全局变量传递到函数的范围

java - 将 pdf 文档合并到单页 iText 中

java - 打开 pdf 时出现 NullPointer 异常 (MUPDF Android)

javascript - Google Drive Web API 保存和下载 pdf

Python 看门狗脚本 : load url asynchronously

javascript - 如果响应包含 50 个 id,如何使用递归进行连续的 axios 调用?

javascript - Rally.environment.getContext().getWorkspace() 为空

java - Spring Async ThreadPoolTask​​Scheduler 未初始化

javascript - Json数据提取