我正在使用Angular 7构建Web应用程序,并且尝试实现类似https://mozilla.github.io/pdf.js/web/viewer.html的搜索功能。

我可以使用它,但是我希望像在官方查看器中一样显示当前比赛和全部比赛。我的代码如下所示:

this.pdfFindController.executeCommand('find', this.searchCommand);
let { current, total, } = this.pdfFindController._requestMatchesCount();
this.currentMatch = current;
this.numberOfSearchMatches = total;
console.log('Number of matches', this.currentMatch, '/',
this.numberOfSearchMatches);

当我运行此代码时,this.currentMatch显示的是先前的匹配,而不是当前的匹配。如果我这样修改代码:
this.pdfFindController.executeCommand('find', this.searchCommand);
setTimeout(() => {
let { current, total, } =
    this.pdfFindController._requestMatchesCount();
    this.currentMatch = current;
    this.numberOfSearchMatches = total;
    console.log('Number of matches', this.currentMatch, '/',
    this.numberOfSearchMatches);
}, 1000);

那么this.currentMatch包含正确的匹配号。所以我想我需要在调用executeCommand和_requestMatcheCount之间等待一些时间。我已经广泛地搜索了代码,但是还没有找到一种方法来知道executeCommand何时完成,因此可以安全地调用_requestMatchesCount。谁能告诉我我如何知道executeCommand已经完成?

最佳答案

我们到了,也许有点晚了!
this.pdfComponent.pdfViewer.eventBus.on('updatefindmatchescount', data => { this.searchMatchesLength = data.matchesCount.total;});

关于pdf.js - 如何知道pdfFindController.executeCommand何时执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55128023/

10-12 16:32