]> git.parisson.com Git - pdf.js.git/commitdiff
Merge branch 'master' of git://github.com/mozilla/pdf.js.git into textsearch-1
authornotmasteryet <async.processingjs@yahoo.com>
Sat, 31 Dec 2011 02:04:08 +0000 (20:04 -0600)
committernotmasteryet <async.processingjs@yahoo.com>
Sat, 31 Dec 2011 02:04:08 +0000 (20:04 -0600)
Conflicts:
web/viewer.js

1  2 
src/core.js
web/viewer.css
web/viewer.js

diff --cc src/core.js
Simple merge
diff --cc web/viewer.css
Simple merge
diff --cc web/viewer.js
index e0eedaae6e7ff356eab3ded9688fcfc6c987884f,b596de2137e3d5543cae7590e1a8a3cb23d83b4a..c8032f62d789a51d502c962a8b9d8d486e0cd2c6
@@@ -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) {