From fed0e9fdd7b2365014b130041fcdb0dfcce92b40 Mon Sep 17 00:00:00 2001 From: frankdelange Date: Thu, 30 Mar 2017 19:25:34 +0200 Subject: [PATCH] files_reader: more PDF work, functioning search, experimental search highlighting --- files_reader/templates/.pdfreader.php.swp | Bin 40960 -> 0 bytes files_reader/vendor/pdfjs/.pdf.reader.js.swp | Bin 53248 -> 0 bytes .../controllers/.outline_controller.js.swp | Bin 12288 -> 0 bytes .../pdfjs/controllers/outline_controller.js | 75 +--------- .../pdfjs/controllers/search_controller.js | 133 +++++++++++++----- .../pdfjs/controllers/textlayer_controller.js | 8 +- files_reader/vendor/pdfjs/css/sidebar.css | 8 ++ files_reader/vendor/pdfjs/pdf.reader.js | 125 +++++++++++++++- 8 files changed, 241 insertions(+), 108 deletions(-) delete mode 100644 files_reader/templates/.pdfreader.php.swp delete mode 100644 files_reader/vendor/pdfjs/.pdf.reader.js.swp delete mode 100644 files_reader/vendor/pdfjs/controllers/.outline_controller.js.swp diff --git a/files_reader/templates/.pdfreader.php.swp b/files_reader/templates/.pdfreader.php.swp deleted file mode 100644 index cf98255a9d2b1f262de1fe8c4c45287e688c393f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 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 diff --git a/files_reader/vendor/pdfjs/.pdf.reader.js.swp b/files_reader/vendor/pdfjs/.pdf.reader.js.swp deleted file mode 100644 index 54c25cbc15eaec8e276f88f5d9b4694a167b99e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 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 Tx{dhnv%$&YEO zt6shLuU8*RRXdLiKEZcsoea-?j9DkXd+O%W-`S+YSk2R&DJoy&sfxOoc4d8$YOFG& zdlla^D(IF9MknG4YM}sR}9yYo@?8}^DAys+Lj~6 zTV>j$zgUm?_gsNoftCWR*^ceoIyWgB`TBK-TgCZXu0XCpu0XCpu0XCpu0XCpu0XE9 z|3U%TSi){1(xu=Pup|OM`I9S*stIsxB%V+Z-D2(v%m!ocpN+e z9sqx=X6zdH0ela>1?Rz+;0*A<7}yCqK^bfS>%m&E3akWI?q%#U_!N8s-U4&L1r8Vi zo56!%16TsSUd7ls@G^k@bTml!sH{b*CB6uF01Qyr>9tAtWjk^&mI15gLDKH6!K`(e1 ztOM7P8$W|<;74#7oCjyY`+#!iZID0zz5?@mSb-=gb;}eA@8YhrA8%CR*WKB$WCU*= ztl$aR^c?;SLz@ycD$LU#h0Vg&bkpp!b>CMNw;`Oqy55k&Q=(d2*uFr!xUz@)Ju~9A z^{tvpMoK{gfh#;xYk0wLzo_X=TdJ@d7%Nac-p$E_y6)fBB5n#%9jd9yy5*O&hVH?x zTC}ZV388IPqYFVtEHPWsYL;WFiWXlIlJ3NWEtHbxI;vvWmNBJt@LJO`q=k~eGdRl% zDH|H@BH`{)U){1zbwW78)1?>=FC7g^G4014mV#I?20VJwMhud4$nvEYN~RVm;3CON zA%$aws1jdF;pi-84Wo67DH`NkOp#CXEb@#;2|#zIbX=bDFbeS}N{INKev>*GA#8+V zA$p2AUAxsqTpHKRH20fTYVEi6MQxJ$mg5Ug_KKS82{jzJ4t#Z{7HAZH)>{R?4`vJKY99knxe=Tqpy(2^H1-;g^84Pah1N|mJ zr;{y;m1QeBQ@0C~>bD2!3ppa^aF0%wo^D{h@RQJyCAKK>6DN58z`mZtL!;xPgQG(OZE2Il-!_6&K2GAd z$CWg&O!%QhQ*EnKjwLsRFWWjH9peGd4i$X~lLW?0*Jw`DQf1)kp%eqQpuee#u3&wk zn(2o``6q2?vd6yPp`C4|JBy;zFcSuJqprq_1dmnD*M*ujI}5$UDY2Z|;srctGgpeJiLu0mr~tYL-N8kBT#OX}EX_Y_+*jx5rg#;Qu6 z5}*H$(OF?l)MXd1y0*EXP5O|rNCGC#A&(RY9?F`mjTto~fjZzgwzpOq2PdT9gq5Up zO~+{{Or{`@!b21io^C8_jy_{eU;!C*GYJ&dZ%bh62iY1Aj*Dy1IGberYO7NBL=E33 zM0;wqbq2HZsZ(3H@dpzzKKju_Xga3AQAwC|gra9}w6@c(Fsgg#M(Z8wIdm}iDuaTq zXcQeWdldVJI~#mM8q=6#bnzA#3pWXD$Yd+YIiIVE(nzX8A;}7~3uO;-Kb71FH!w^^ zh=9_C1~=ZkGHNBZlTnPTXSN}Ib* wVeDAS8P}y0p<}RC#e39mn10a*7>qaRASs8#BN1)k;RSlsi`Q^9?ug|73x)C+v;Y7A diff --git a/files_reader/vendor/pdfjs/controllers/outline_controller.js b/files_reader/vendor/pdfjs/controllers/outline_controller.js index 2bada46..3a0f1c9 100644 --- a/files_reader/vendor/pdfjs/controllers/outline_controller.js +++ b/files_reader/vendor/pdfjs/controllers/outline_controller.js @@ -4,78 +4,10 @@ PDFJS.reader.OutlineController = function(_outline) { book = this.book, outline = _outline || []; - var outlineView = document.getElementById("outlineView"), - baseUrl = location.href.split('#')[0], - lastToggleIsShow; + var outlineView = document.getElementById("outlineView"); var DEFAULT_TITLE = '\u2013'; - var bindLink = function (element, item) { - - var destination = item.dest; - - if (item.url) { - - PDFJS.addLinkAttributes (element, { - url: item.url, - target: (item.newWindow - ? PDFJS.LinkTarget.BLANK - : undefined), - }); - - return; - } else { - - element.href = getDestinationHash(destination); - element.onclick = function () { - if (destination) { - reader.navigateTo(destination); - } - - return false; - }; - } - }; - - var setStyles = function (element, item) { - - var styleStr = ""; - - if (item.bold) { - styleStr += 'font-weight: bold;'; - } - - if (item.italic) { - styleStr += 'font-style: italic;'; - } - - if (styleStr) { - element.setAttribute('style', styleStr); - } - }; - - var getDestinationHash = function (destination) { - - var url = baseUrl || "", - str; - - if (typeof destination === 'string') { - - url += "#" - + (parseInt(destination) === destination) - ? "nameddest=" - : "" - + escape(destination); - - } else if (destination instanceof Array) { - - url += "#" - + escape(JSON.stringify(destination)); - } - - return url; - }; - var generateOutlineItems = function (outline, level) { var container = document.createElement("ul"); @@ -83,6 +15,7 @@ PDFJS.reader.OutlineController = function(_outline) { if(!level) level = 1; outline.forEach(function (chapter) { + var listitem = document.createElement("li"), link = document.createElement("a"), toggle = document.createElement("a"), @@ -92,8 +25,8 @@ PDFJS.reader.OutlineController = function(_outline) { listitem.classList.add('list_item'); link.textContent = PDFJS.removeNullCharacters(chapter.title) || DEFAULT_TITLE; - bindLink(link, chapter); - setStyles(link, chapter); + reader.bindLink(link, chapter); + reader.setStyles(link, chapter); link.classList.add('outline_link'); listitem.appendChild(link); diff --git a/files_reader/vendor/pdfjs/controllers/search_controller.js b/files_reader/vendor/pdfjs/controllers/search_controller.js index af2912a..d2ce383 100644 --- a/files_reader/vendor/pdfjs/controllers/search_controller.js +++ b/files_reader/vendor/pdfjs/controllers/search_controller.js @@ -152,6 +152,7 @@ PDFJS.reader.SearchController = function () { matches.push(matchIdx); } this.pageMatches[pageIndex] = matches; + }; var calcFindWordMatch = function ( @@ -189,6 +190,55 @@ PDFJS.reader.SearchController = function () { this.pageMatchesLength[pageIndex]); }; + var getSnippet = function (pageIndex, position) { + + var ellipse = '…', + match_length = this.state.query.length, + span = '', + span_close = '', + limit = 160 + span.length + span_close.length, + leader, + trailer, + context; + + leader = this.pageContents[pageIndex].substring(position - limit/2, position); + leader = leader.slice(leader.indexOf(" ")); + trailer = this.pageContents[pageIndex].substring(position + match_length, position + limit/2 + match_length); + query = this.pageContents[pageIndex].substring(position, position + match_length); + + context = ellipse + leader + span + query + span_close + trailer; + + return reader.ellipsize(context, context.length - 10); + }; + + var createItem = function (pageIndex, position) { + + var listitem = document.createElement("li"), + link = document.createElement("a"), + id = parseInt(pageIndex + 1) + ":" + position, + item = { + url: null, + dest: null, + bold: null, + italic: null + }; + + // for now only the pageIndex is used + item.dest = [pageIndex,position]; + + //link.textContent = getSnippet(pageIndex, position); + link.innerHTML = getSnippet(pageIndex, position); + listitem.classList.add("list_item"); + listitem.id = "search-"+id; + listitem.dataset.position = position; + reader.bindLink(link, item); + link.classList.add("search_link"); + listitem.appendChild(link); + + return listitem; + }; + + var calcFindMatch = function (pageIndex) { var pageContent = normalize(this.pageContents[pageIndex]); var query = normalize(this.state.query); @@ -211,18 +261,6 @@ PDFJS.reader.SearchController = function () { } else { calcFindWordMatch(query, pageIndex, pageContent); } - - updatePage(pageIndex); - if (this.resumePageIdx === pageIndex) { - this.resumePageIdx = null; - nextPageMatch(); - } - - // Update the matches count - if (this.pageMatches[pageIndex].length > 0) { - this.matchCount += this.pageMatches[pageIndex].length; - updateUIResultsCount(); - } }; var extractText = function () { @@ -253,19 +291,12 @@ PDFJS.reader.SearchController = function () { } // Store the pageContent as a string. - self.pageContents.push(str.join('')); + self.pageContents.push(str.join(' ').replace(/\s\s+/g, ' ')); extractTextPromisesResolves[pageIndex](pageIndex); if ((pageIndex + 1) < reader.settings.numPages) { - console.log("extracting text from page " + parseInt(pageIndex + 1)); extractPageText(pageIndex + 1); - } else { - console.log("finished extracting text"); - for (var i=0;i < reader.settings.numPages;i++) { - console.log("PAGE: " + parseInt(i + 1)); - console.log(self.pageContents[i]); - } - } + } } ); } @@ -287,7 +318,8 @@ PDFJS.reader.SearchController = function () { clearTimeout(this.findTimeout); if (cmd === 'find') { // Only trigger the find action after 250ms of silence. - this.findTimeout = setTimeout(nextMatch.bind(this), 250); + //this.findTimeout = setTimeout(nextMatch.bind(this), 250); + generateMatchList(); } else { nextMatch(); } @@ -309,6 +341,39 @@ PDFJS.reader.SearchController = function () { //} }; + var generateMatchList = function () { + + var container = document.getElementById("searchResults"), + numPages = reader.settings.numPages, + self = this; + + for (var i = 0; i < numPages; i++) { + //var placeholder = document.createElement("li"); + //placeholder.style.display = "none"; + //container.appendChild(placeholder); + if (!(i in this.pendingFindMatches)) { + this.pendingFindMatches[i] = true; + this.extractTextPromises[i].then(function(pageIdx) { + delete self.pendingFindMatches[pageIdx]; + calcFindMatch(pageIdx); + if (self.pageMatches[pageIdx].length > 0) { + reader.pageMatches[pageIdx] = self.pageMatches[pageIdx]; + var fragment = document.createDocumentFragment(); + var listitem = document.createElement("li"); + listitem.textContent="page " + parseInt(pageIdx + 1); + listitem.classList.add("search_page_header"); + fragment.appendChild(listitem); + self.pageMatches[pageIdx].forEach(function (match) { + fragment.appendChild(createItem(pageIdx, match)); + }); + + container.appendChild(fragment); + } + }); + } + } + }; + var nextMatch = function () { var previous = this.state.findPrevious; @@ -501,22 +566,20 @@ PDFJS.reader.SearchController = function () { q = $searchBox.val(); } - if (q == '') { + if (q === '') { clear(); return; } reader.SidebarController.changePanelTo("Search"); + reset(); $searchResults.empty(); - $searchResults.append("
  • Searching...

  • "); - reader.SearchController.query = q; - - //runQuery(q, $searchResults[0]); + this.query = q; executeCommand('find', {query: q}); - + highlightQuery(); }; $searchBox.on("keydown", function(e) { @@ -537,12 +600,14 @@ PDFJS.reader.SearchController = function () { }); $clear_search.on("click", function () { + reset(); unhighlight(); $searchResults.empty(); }); var clear = function () { + reset(); unhighlight(); $searchResults.empty(); @@ -552,13 +617,13 @@ PDFJS.reader.SearchController = function () { }; var highlightQuery = function(e) { - $("#viewer iframe").contents().find('body').highlight(reader.SearchController.query, { element: 'span' }); + $("#text_left").contents().highlight(this.state.query, { element: 'span' }); + $("#text_right").contents().highlight(this.state.query, { element: 'span' }); }; var unhighlight = function(e) { - $body = $("#viewer iframe").contents().find('body'); - $body.unhighlight(); - book.off("renderer:chapterDisplayed", highlightQuery); + $("#text_left").unhighlight(); + $("#text_right").unhighlight(); }; @@ -566,6 +631,8 @@ PDFJS.reader.SearchController = function () { "show": onShow, "hide": onHide, "search": search, - "executeCommand": executeCommand + "executeCommand": executeCommand, + "highlightQuery": highlightQuery, + "unhighlight": unhighlight }; }; diff --git a/files_reader/vendor/pdfjs/controllers/textlayer_controller.js b/files_reader/vendor/pdfjs/controllers/textlayer_controller.js index df2b81c..a8b7e6a 100644 --- a/files_reader/vendor/pdfjs/controllers/textlayer_controller.js +++ b/files_reader/vendor/pdfjs/controllers/textlayer_controller.js @@ -116,12 +116,14 @@ PDFJS.Reader.TextLayerController.prototype.setTextContent = function (textConten }; PDFJS.Reader.TextLayerController.prototype.convertMatches = function(matches, matchesLength) { + + var reader = this; + var i = 0; var iIndex = 0; var bidiTexts = this.textContent.items; var end = bidiTexts.length - 1; - var queryLen = (this.findController === null ? - 0 : this.findController.state.query.length); + var queryLen = reader.search.query.length; var ret = []; if (!matches) { return ret; @@ -177,6 +179,8 @@ PDFJS.Reader.TextLayerController.prototype.renderMatches = function (matches) { return; } + var reader = this; + var bidiTexts = this.textContent.items; var textDivs = this.textDivs; var prevEnd = null; diff --git a/files_reader/vendor/pdfjs/css/sidebar.css b/files_reader/vendor/pdfjs/css/sidebar.css index c9b259c..7232f36 100644 --- a/files_reader/vendor/pdfjs/css/sidebar.css +++ b/files_reader/vendor/pdfjs/css/sidebar.css @@ -313,6 +313,7 @@ legend { .search-results { overflow-y: scroll; + overflow-wrap: break-word; height: 95%; height: calc(100vh - 5em); } @@ -323,6 +324,11 @@ legend { box-shadow: 0 1px 10px rgba(0, 0, 0, 0.4); } +.search_match { + font-weight: bold; + font-decoration: underline; +} + .searchbox { width: 80%; float: left; @@ -345,6 +351,8 @@ legend { #clear_search { padding: 0; padding-right: 0.5em; + position: absolute; + height: auto; } /* END search */ diff --git a/files_reader/vendor/pdfjs/pdf.reader.js b/files_reader/vendor/pdfjs/pdf.reader.js index af53a54..68d75ed 100644 --- a/files_reader/vendor/pdfjs/pdf.reader.js +++ b/files_reader/vendor/pdfjs/pdf.reader.js @@ -39,7 +39,7 @@ PDFJS.Reader = function(bookPath, _options) { pageRenderDelay: PAGE_RENDER_DELAY, canvasLimit: 0, cssZoomOnly: false, // true || false, only zoom using CSS, render document at 100% size - textSelect: false, // true || false, add selectable text layer + textSelect: true, // true || false, add selectable text layer doubleBuffer: true, // true || false, draw to off-screen canvas cacheNext: true, // true || false, pre-render next page (by creathing thumbnail)) numPages: 0, @@ -129,6 +129,9 @@ PDFJS.Reader = function(bookPath, _options) { this.renderQueue = false; + // used for search + this.pageMatches = []; + // define which zoom states to cycle through in cycleZoom this.zoomCycle = { 'spread': 'fit_page', @@ -268,7 +271,9 @@ PDFJS.Reader.prototype.getThumb = function (pageNum, insert) { renderContext, renderTask; - if (reader.thumbs[pageNum] === undefined) { + if (pageNum > 0 && + pageNum <= reader.settings.numPages && + reader.thumbs[pageNum] === undefined) { reader.thumbs[pageNum] = true; @@ -452,6 +457,8 @@ PDFJS.Reader.prototype.renderPage = function(pageNum) { double_buffer = reader.settings.doubleBuffer; cache_next = reader.settings.cacheNext; + textdiv.innerHTML = ""; + if (pageNum <= this.settings.numPages && pageNum >= 1) { if (resourcelst.renderTask) { @@ -944,3 +951,117 @@ PDFJS.Reader.prototype.getPageTextContent = function (pageIndex) { }); }; +PDFJS.Reader.prototype.getDestinationHash = function (destination) { + + var url = location.href.split('#')[0], + str; + + if (typeof destination === 'string') { + + url += "#" + + (parseInt(destination) === destination) + ? "nameddest=" + : "" + + escape(destination); + + } else if (destination instanceof Array) { + + url += "#" + + escape(JSON.stringify(destination)); + } + + return url; +}; + +PDFJS.Reader.prototype.setStyles = function (element, item) { + + var styleStr = ""; + + if (item.bold) { + styleStr += 'font-weight: bold;'; + } + + if (item.italic) { + styleStr += 'font-style: italic;'; + } + + if (styleStr) { + element.setAttribute('style', styleStr); + } +}; + + +PDFJS.Reader.prototype.bindLink = function (element, item) { + + var reader = this, + destination = item.dest; + + if (item.url) { + + PDFJS.addLinkAttributes (element, { + url: item.url, + target: (item.newWindow + ? PDFJS.LinkTarget.BLANK + : undefined), + }); + + return; + } else { + + element.href = reader.getDestinationHash(destination); + element.onclick = function () { + if (destination) { + reader.navigateTo(destination); + } + + return false; + }; + } +}; + +// https://github.com/mvhenten/ellipsize/blob/master/index.js +PDFJS.Reader.prototype.ellipsize = function(str, max, opts) { + + var defaults = { + ellipse: '…', + chars: [' ', '-'], + max: 140, + truncate: true + }; + + if (typeof str !== 'string' || str.length === 0) return ''; + if (max === 0) return ''; + + opts = opts || {}; + + for (var key in defaults) { + if (opts[key] === null || typeof opts[key] === 'undefined') { + opts[key] = defaults[key]; + } + } + + opts.max = max || opts.max; + + var last = 0, + c = ''; + + if (str.length < opts.max) return str; + + for (var i = 0, len = str.length; i < len; i++) { + c = str.charAt(i); + + if (opts.chars.indexOf(c) !== -1) { + last = i; + } + + if (i < opts.max) continue; + if (last === 0) { + return !opts.truncate ? '' : str.substring(0, opts.max - 1) + opts.ellipse; + } + + return str.substring(0, last) + opts.ellipse; + } + + return str; +}; +