From: notmasteryet Date: Sat, 31 Dec 2011 02:04:08 +0000 (-0600) Subject: Merge branch 'master' of git://github.com/mozilla/pdf.js.git into textsearch-1 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=7b479c352c6e283e17fd8cb2169160ee9b7a5669;p=pdf.js.git Merge branch 'master' of git://github.com/mozilla/pdf.js.git into textsearch-1 Conflicts: web/viewer.js --- 7b479c352c6e283e17fd8cb2169160ee9b7a5669 diff --cc web/viewer.js index e0eedaa,b596de2..c8032f6 --- a/web/viewer.js +++ b/web/viewer.js @@@ -307,70 -432,12 +432,74 @@@ var PDFView = this.setHash(this.initialBookmark); this.initialBookmark = null; } - else + else if (storedHash) + this.setHash(storedHash); + else { + this.setScale(scale || kDefaultScale, true); this.page = 1; + } + + // loosing pdf reference here, starting text indexing in 500ms + setTimeout((function loadStartTextExtraction() { + this.startTextExtraction(pdf); + }).bind(this), 500); + delete PDFView.extractedText; + }, + + startTextExtraction: function pdfViewStartTextExtraction(pdf) { + var searchResults = document.getElementById('searchResults'); + searchResults.textContent = ''; + + pdf.textExtracted = function pdfTextExtracted(index) { + PDFView.extractedText = index; + }; + pdf.extractText(); + }, + + search: function pdfViewStartSearch() { + function bindLink(link, pageNumber) { + link.href = '#' + pageNumber; + link.onclick = function searchBindLink() { + PDFView.page = pageNumber; + return false; + }; + } + + var searchResults = document.getElementById('searchResults'); + if (!('extractedText' in PDFView)) { + // not indexed yet, repeat in 1 second + searchResults.textContent = 'Searching...'; + setTimeout(this.search.bind(this), 1000); + return; + } + + var searchTermsInput = document.getElementById('searchTermsInput'); + searchResults.removeAttribute('hidden'); + searchResults.textContent = ''; + + var terms = searchTermsInput.value; + // simple search: removing spaces and hyphens, then scanning every + terms = terms.replace(/\s-/g, '').toLowerCase(); + var index = PDFView.extractedText; + var pageFound = false; + for (var i = 0, ii = index.length; i < ii; i++) { + var pageText = index[i].replace(/\s-/g, '').toLowerCase(); + var j = pageText.indexOf(terms); + if (j < 0) + continue; + + var pageNumber = i + 1; + var textSample = index[i].substr(j, 50); + var link = document.createElement('a'); + bindLink(link, pageNumber); + link.textContent = 'Page ' + pageNumber + ': ' + textSample; + searchResults.appendChild(link); + + pageFound = true; + } + if (!pageFound) { + searchResults.textContent = '(Not found)'; + } }, setHash: function pdfViewSetHash(hash) {