Merge pull request #8397 from Snuffleupagus/extractText-refactor
Simplify `extractText`, and replace unnecessary `var self = this` statements with arrow functions, in `web/pdf_find_controller.js`
This commit is contained in:
commit
52998c5fe1
@ -13,6 +13,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { createPromiseCapability } from './pdfjs';
|
||||
import { scrollIntoView } from './ui_utils';
|
||||
|
||||
var FindStates = {
|
||||
@ -231,43 +232,32 @@ var PDFFindController = (function PDFFindControllerClosure() {
|
||||
}
|
||||
},
|
||||
|
||||
extractText: function PDFFindController_extractText() {
|
||||
extractText() {
|
||||
if (this.startedTextExtraction) {
|
||||
return;
|
||||
}
|
||||
this.startedTextExtraction = true;
|
||||
this.pageContents.length = 0;
|
||||
|
||||
this.pageContents = [];
|
||||
var extractTextPromisesResolves = [];
|
||||
var numPages = this.pdfViewer.pagesCount;
|
||||
for (var i = 0; i < numPages; i++) {
|
||||
this.extractTextPromises.push(new Promise(function (resolve) {
|
||||
extractTextPromisesResolves.push(resolve);
|
||||
}));
|
||||
}
|
||||
let promise = Promise.resolve();
|
||||
for (let i = 0, ii = this.pdfViewer.pagesCount; i < ii; i++) {
|
||||
let extractTextCapability = createPromiseCapability();
|
||||
this.extractTextPromises[i] = extractTextCapability.promise;
|
||||
|
||||
var self = this;
|
||||
function extractPageText(pageIndex) {
|
||||
self.pdfViewer.getPageTextContent(pageIndex).then(
|
||||
function textContentResolved(textContent) {
|
||||
var textItems = textContent.items;
|
||||
var str = [];
|
||||
promise = promise.then(() => {
|
||||
return this.pdfViewer.getPageTextContent(i).then((textContent) => {
|
||||
let textItems = textContent.items;
|
||||
let strBuf = [];
|
||||
|
||||
for (var i = 0, len = textItems.length; i < len; i++) {
|
||||
str.push(textItems[i].str);
|
||||
for (let j = 0, jj = textItems.length; j < jj; j++) {
|
||||
strBuf.push(textItems[j].str);
|
||||
}
|
||||
|
||||
// Store the pageContent as a string.
|
||||
self.pageContents.push(str.join(''));
|
||||
|
||||
extractTextPromisesResolves[pageIndex](pageIndex);
|
||||
if ((pageIndex + 1) < self.pdfViewer.pagesCount) {
|
||||
extractPageText(pageIndex + 1);
|
||||
}
|
||||
}
|
||||
);
|
||||
this.pageContents[i] = strBuf.join('');
|
||||
extractTextCapability.resolve(i);
|
||||
});
|
||||
});
|
||||
}
|
||||
extractPageText(0);
|
||||
},
|
||||
|
||||
executeCommand: function PDFFindController_executeCommand(cmd, state) {
|
||||
@ -322,18 +312,17 @@ var PDFFindController = (function PDFFindControllerClosure() {
|
||||
this.pageMatches = [];
|
||||
this.matchCount = 0;
|
||||
this.pageMatchesLength = null;
|
||||
var self = this;
|
||||
|
||||
for (var i = 0; i < numPages; i++) {
|
||||
for (let i = 0; i < numPages; i++) {
|
||||
// Wipe out any previous highlighted matches.
|
||||
this.updatePage(i);
|
||||
|
||||
// As soon as the text is extracted start finding the matches.
|
||||
if (!(i in this.pendingFindMatches)) {
|
||||
this.pendingFindMatches[i] = true;
|
||||
this.extractTextPromises[i].then(function(pageIdx) {
|
||||
delete self.pendingFindMatches[pageIdx];
|
||||
self.calcFindMatch(pageIdx);
|
||||
this.extractTextPromises[i].then((pageIdx) => {
|
||||
delete this.pendingFindMatches[pageIdx];
|
||||
this.calcFindMatch(pageIdx);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user