From b54be346b59b868c473a985242271e7e1f5696d4 Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Fri, 14 Oct 2011 21:05:57 -0500 Subject: [PATCH 01/15] Add "bookmark" icon; and fixing scale/ current page number issues --- pdf.js | 5 +- web/images/bookmark.svg | 661 ++++++++++++++++++++++++++++++++++++++++ web/viewer.css | 4 + web/viewer.html | 4 + web/viewer.js | 98 ++++-- 5 files changed, 748 insertions(+), 24 deletions(-) create mode 100644 web/images/bookmark.svg diff --git a/pdf.js b/pdf.js index 3ebddd119..84ddd3800 100644 --- a/pdf.js +++ b/pdf.js @@ -3634,8 +3634,8 @@ var Page = (function pagePage() { gfx.execute(this.code, xref, resources); gfx.endDrawing(); }, - rotatePoint: function pageRotatePoint(x, y) { - var rotate = this.rotate; + rotatePoint: function pageRotatePoint(x, y, reverse) { + var rotate = reverse ? (360 - this.rotate) : this.rotate; switch (rotate) { case 180: return {x: this.width - x, y: y}; @@ -3643,6 +3643,7 @@ var Page = (function pagePage() { return {x: this.width - y, y: this.height - x}; case 270: return {x: y, y: x}; + case 360: case 0: default: return {x: x, y: this.height - y}; diff --git a/web/images/bookmark.svg b/web/images/bookmark.svg new file mode 100644 index 000000000..2c1fa130d --- /dev/null +++ b/web/images/bookmark.svg @@ -0,0 +1,661 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + New Bookmark + + + bookmark + remember + favorite + + + + + + Andreas Nilsson + + + + + + Jakub Steiner + + + create bookmark action + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/viewer.css b/web/viewer.css index e72bdc286..6c7b551e8 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -34,6 +34,10 @@ body { margin: 4px; } +#controls > a > img { + margin: 2px; +} + #controls > button { line-height: 32px; } diff --git a/web/viewer.html b/web/viewer.html index 160c5ce57..1f34fe01c 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -70,6 +70,10 @@
+ + Bookmark + + -- diff --git a/web/viewer.js b/web/viewer.js index 93f6acd31..6e43d6832 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -89,16 +89,23 @@ var PDFView = { var pages = this.pages; var input = document.getElementById('pageNumber'); if (!(0 < val && val <= pages.length)) { - input.value = this.page; + var event = document.createEvent('UIEvents'); + event.initUIEvent('pagechange', false, false, window, 0); + event.pageNumber = this.page; + window.dispatchEvent(event); return; } currentPageNumber = val; - document.getElementById('previous').disabled = (val == 1); - document.getElementById('next').disabled = (val == pages.length); - if (input.value != val) { - input.value = val; - } + var event = document.createEvent('UIEvents'); + event.initUIEvent('pagechange', false, false, window, 0); + event.pageNumber = val; + window.dispatchEvent(event); + + // checking if the this.page was called from the updateViewarea function: + // avoiding the creation of two "set page" method (internal and public) + if (updateViewarea.inProgress) + return; pages[val - 1].scrollIntoView(); }, @@ -147,12 +154,20 @@ var PDFView = { if (typeof dest === 'string') return '#' + escape(dest); if (dest instanceof Array) { - var destRef = dest[0]; // see nevigateTo method for dest format + var destRef = dest[0]; // see navigateTo method for dest format var pageNumber = destRef instanceof Object ? this.pagesRefMap[destRef.num + ' ' + destRef.gen + ' R'] : (destRef + 1); if (pageNumber) { - return '#page=' + pageNumber + '&dest=' + dest.slice(1).join(','); + var pdfOpenParams = '#page=' + pageNumber; + if (isName(dest[1], 'XYZ')) { + var scale = (dest[4] || this.currentScale); + pdfOpenParams += '&zoom=' + (scale * 100); + if (dest[2] || dest[3]) { + pdfOpenParams += ',' + (dest[2] || 0) + ',' + (dest[3] || 0); + } + } + return pdfOpenParams; } } return ''; @@ -226,10 +241,32 @@ var PDFView = { return; if (hash.indexOf('=') >= 0) { - // TODO more complex hashes, for now catching page=XX only - var m = /\bpage=(\d+)/.exec(hash); - if (m && m[1] > 0) - this.page = m[1]; + // parsing query string + var paramsPairs = hash.split('&'); + var params = {}; + for (var i = 0; i < paramsPairs.length; ++i) { + var paramPair = paramsPairs[i].split('='); + params[paramPair[0]] = paramPair[1]; + } + // borrowing syntax from "Parameters for Opening PDF Files" + if ('nameddest' in params) { + PDFView.navigateTo(params.nameddest); + return; + } + if ('page' in params) { + var pageNumber = (params.page | 0) || 1; + this.page = pageNumber; + if ('zoom' in params) { + var zoomArgs = params.zoom.split(','); // scale,left,top + // building destination array + var dest = [null, new Name('XYZ'), (zoomArgs[1] | 0), + (zoomArgs[2] | 0), (zoomArgs[0] | 0) / 100]; + var currentPage = this.pages[pageNumber - 1]; + currentPage.scrollIntoView(dest); + } else + this.page = page; // simple page + return; + } } else if (/^\d+$/.test(hash)) // page number this.page = hash; else // named destination @@ -339,6 +376,11 @@ var PageView = function pageView(container, content, id, pageWidth, pageHeight, } } + this.getPagePoint = function pageViewGetPagePoint(x, y) { + var scale = PDFView.currentScale; + return this.content.rotatePoint(x / scale, y / scale); + }; + this.scrollIntoView = function pageViewScrollIntoView(dest) { if (!dest) { div.scrollIntoView(true); @@ -388,7 +430,7 @@ var PageView = function pageView(container, content, id, pageWidth, pageHeight, this.content.rotatePoint(x + width, y + height) ]; - if (scale) + if (scale && scale !== PDFView.currentScale) PDFView.setScale(scale, true); setTimeout(function pageViewScrollIntoViewRelayout() { @@ -575,13 +617,21 @@ function updateViewarea() { if (!visiblePages.length) return; + updateViewarea.inProgress = true; // used in "set page" var currentId = PDFView.page; var firstPage = visiblePages[0]; - var lastPage = visiblePages[visiblePages.length - 1]; - if (currentId > lastPage.id && lastPage.y > window.pageYOffset) - PDFView.page = lastPage.id; - else if (currentId < firstPage.id) - PDFView.page = firstPage.id; + PDFView.page = firstPage.id; + updateViewarea.inProgress = false; + + var kViewerTopMargin = 52; + var pageNumber = firstPage.id; + var pdfOpenParams = '#page=' + pageNumber; + pdfOpenParams += '&zoom=' + Math.round(PDFView.currentScale * 100); + var currentPage = PDFView.pages[pageNumber - 1]; + var topLeft = currentPage.getPagePoint(window.pageXOffset, + window.pageYOffset - firstPage.y - kViewerTopMargin); + pdfOpenParams += ',' + Math.round(topLeft.x) + ',' + Math.round(topLeft.y); + document.getElementById('viewBookmark').href = pdfOpenParams; } window.addEventListener('scroll', function webViewerScroll(evt) { @@ -622,6 +672,9 @@ window.addEventListener('change', function webViewerChange(evt) { fileReader.readAsBinaryString(file); document.title = file.name; + + // URL does not reflect proper document location - hiding bookmark icon. + document.getElementById('viewBookmark').style.display = 'none'; }, true); window.addEventListener('transitionend', function webViewerTransitionend(evt) { @@ -672,10 +725,11 @@ window.addEventListener('scalechange', function scalechange(evt) { }, true); window.addEventListener('pagechange', function pagechange(evt) { - var page = evt.detail; - document.getElementById('pageNumber').value = page; - document.getElementById('previous').disabled = (page == 1); - document.getElementById('next').disabled = (page == PDFView.pages.length); + var page = evt.pageNumber; + if (document.getElementById('pageNumber').value != page) + document.getElementById('pageNumber').value = page; + document.getElementById('previous').disabled = (page <= 1); + document.getElementById('next').disabled = (page >= PDFView.pages.length); }, true); window.addEventListener('keydown', function keydown(evt) { From 3c53e34c7b9815b6ab5e82117e300045f6a8c2b1 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Sat, 15 Oct 2011 23:32:56 +0300 Subject: [PATCH 02/15] Refactor duplicate code in getBlackCode. --- pdf.js | 64 +++++++++++++++++++++++++--------------------------------- 1 file changed, 27 insertions(+), 37 deletions(-) diff --git a/pdf.js b/pdf.js index 3ebddd119..0aaf68539 100644 --- a/pdf.js +++ b/pdf.js @@ -2089,45 +2089,35 @@ var CCITTFaxStream = (function ccittFaxStream() { return p[1]; } } else { - var n; - for (n = 2; n <= 6; ++n) { - code = this.lookBits(n); - if (code == EOF) - return 1; - if (n < 6) - code <<= 6 - n; - p = blackTable3[code]; - if (p[0] == n) { - this.eatBits(n); - return p[1]; - } - } - for (n = 7; n <= 12; ++n) { - code = this.lookBits(n); - if (code == EOF) - return 1; - if (n < 12) - code <<= 12 - n; - if (code >= 64) { - p = blackTable2[code - 64]; - if (p[0] == n) { - this.eatBits(n); - return p[1]; + var findBlackCode = function ccittFaxStreamFindBlackCode(start, end, table, limit) { + for (var i = start; i <= end; ++i) { + var code = this.lookBits(i); + if (code == EOF) + return [true, 1]; + if (i < end) + code <<= end - i; + if (code >= limit) { + var p = table[code]; + if (p[0] == i) { + this.eatBits(i); + return [true, p[1]]; + } } } - } - for (n = 10; n <= 13; ++n) { - code = this.lookBits(n); - if (code == EOF) - return 1; - if (n < 13) - code <<= 13 - n; - p = blackTable1[code]; - if (p[0] == n) { - this.eatBits(n); - return p[1]; - } - } + return [false, 0]; + }; + + var result = findBlackCode(2, 6, blackTable3, -1); + if (result[0]) + return result[1]; + + result = findBlackCode(7, 12, blackTable2, 64); + if (result[0]) + return result[1]; + + result = findBlackCode(10, 13, blackTable1, -1); + if (result[0]) + return result[1]; } warn('bad black code'); this.eatBits(1); From d39ea4dc5486911a8ce154f00d0d06b54b590386 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Sun, 16 Oct 2011 12:34:34 +0300 Subject: [PATCH 03/15] Adhere to 80 char line limit. --- pdf.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pdf.js b/pdf.js index 0aaf68539..60774808a 100644 --- a/pdf.js +++ b/pdf.js @@ -2089,7 +2089,8 @@ var CCITTFaxStream = (function ccittFaxStream() { return p[1]; } } else { - var findBlackCode = function ccittFaxStreamFindBlackCode(start, end, table, limit) { + var findBlackCode = function ccittFaxStreamFindBlackCode(start, end, + table, limit) { for (var i = start; i <= end; ++i) { var code = this.lookBits(i); if (code == EOF) From e83c77148d4c64602ad3d88aba0c4b5c5e998186 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas <21@vingtetun.org> Date: Mon, 17 Oct 2011 21:04:54 +0200 Subject: [PATCH 04/15] add oncontextmenu='return false;' to buttons --- web/viewer.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/web/viewer.html b/web/viewer.html index 160c5ce57..428171b9e 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -17,12 +17,12 @@
- - @@ -36,16 +36,16 @@
- -
- @@ -59,14 +59,14 @@
-
- +
From 6688c3a1f5c1ff8d0071bba8d76e60df9f99ec2f Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Mon, 17 Oct 2011 22:24:19 +0300 Subject: [PATCH 05/15] Handle blackTable2 array access correctly. --- pdf.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pdf.js b/pdf.js index 60774808a..f11d28c36 100644 --- a/pdf.js +++ b/pdf.js @@ -2098,7 +2098,7 @@ var CCITTFaxStream = (function ccittFaxStream() { if (i < end) code <<= end - i; if (code >= limit) { - var p = table[code]; + var p = table[code - ((limit == -1) ? 0 : limit)]; if (p[0] == i) { this.eatBits(i); return [true, p[1]]; From 31cb9b49d502c387477e6c7f42da127243e6021b Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Tue, 18 Oct 2011 00:00:44 +0300 Subject: [PATCH 06/15] Fix javascript strict warnings in driver.js. --- test/driver.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/driver.js b/test/driver.js index 7f5aef733..b453c5051 100644 --- a/test/driver.js +++ b/test/driver.js @@ -66,7 +66,8 @@ function nextTask() { cleanup(); if (currentTaskIdx == manifest.length) { - return done(); + done(); + return; } var task = manifest[currentTaskIdx]; task.round = 0; @@ -86,7 +87,7 @@ function nextTask() { } function isLastPage(task) { - return task.pageNum > task.pdfDoc.numPages || task.pageNum > task.pageLimit; + return task.pageNum > (task.pageLimit || task.pdfDoc.numPages); } function canvasToDataURL() { From 3ba167645fb75374e86aae30648fb385d76af970 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Tue, 18 Oct 2011 00:29:43 +0300 Subject: [PATCH 07/15] Refactor duplicate code in getWhiteCode. Reuse functionality from getBlackCode for this. --- pdf.js | 74 ++++++++++++++++++++++------------------------------------ 1 file changed, 28 insertions(+), 46 deletions(-) diff --git a/pdf.js b/pdf.js index 68c5dfad4..d4326b5ab 100644 --- a/pdf.js +++ b/pdf.js @@ -2021,6 +2021,25 @@ var CCITTFaxStream = (function ccittFaxStream() { return EOF; }; + var findTableCode = function ccittFaxStreamFindTableCode(start, end, table, + limit) { + for (var i = start; i <= end; ++i) { + var code = this.lookBits(i); + if (code == EOF) + return [true, 1]; + if (i < end) + code <<= end - i; + if (code >= limit) { + var p = table[code - ((limit == ccittEOL) ? 0 : limit)]; + if (p[0] == i) { + this.eatBits(i); + return [true, p[1]]; + } + } + } + return [false, 0]; + }; + constructor.prototype.getWhiteCode = function ccittFaxStreamGetWhiteCode() { var code = 0; var p; @@ -2040,31 +2059,13 @@ var CCITTFaxStream = (function ccittFaxStream() { return p[1]; } } else { - for (var n = 1; n <= 9; ++n) { - code = this.lookBits(n); - if (code == EOF) - return 1; + var result = findTableCode(1, 9, whiteTable2, ccittEOL); + if (result[0]) + return result[1]; - if (n < 9) - code <<= 9 - n; - p = whiteTable2[code]; - if (p[0] == n) { - this.eatBits(n); - return p[0]; - } - } - for (var n = 11; n <= 12; ++n) { - code = this.lookBits(n); - if (code == EOF) - return 1; - if (n < 12) - code <<= 12 - n; - p = whiteTable1[code]; - if (p[0] == n) { - this.eatBits(n); - return p[1]; - } - } + result = findTableCode(11, 12, whiteTable1, ccittEOL); + if (result[0]) + return result[1]; } warn('bad white code'); this.eatBits(1); @@ -2089,34 +2090,15 @@ var CCITTFaxStream = (function ccittFaxStream() { return p[1]; } } else { - var findBlackCode = function ccittFaxStreamFindBlackCode(start, end, - table, limit) { - for (var i = start; i <= end; ++i) { - var code = this.lookBits(i); - if (code == EOF) - return [true, 1]; - if (i < end) - code <<= end - i; - if (code >= limit) { - var p = table[code - ((limit == -1) ? 0 : limit)]; - if (p[0] == i) { - this.eatBits(i); - return [true, p[1]]; - } - } - } - return [false, 0]; - }; - - var result = findBlackCode(2, 6, blackTable3, -1); + var result = findTableCode(2, 6, blackTable3, ccittEOL); if (result[0]) return result[1]; - result = findBlackCode(7, 12, blackTable2, 64); + result = findTableCode(7, 12, blackTable2, 64); if (result[0]) return result[1]; - result = findBlackCode(10, 13, blackTable1, -1); + result = findTableCode(10, 13, blackTable1, ccittEOL); if (result[0]) return result[1]; } From f1444d6175794dd942c8a7d0f74b02508cb96bac Mon Sep 17 00:00:00 2001 From: Vivien Nicolas <21@vingtetun.org> Date: Tue, 18 Oct 2011 00:18:12 +0200 Subject: [PATCH 08/15] Fix wrongs ids --- web/viewer.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/viewer.html b/web/viewer.html index 428171b9e..5da063b91 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -36,10 +36,10 @@
- - From 931192fb79d03746626ef35312d5fc925c02b8d8 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas <21@vingtetun.org> Date: Tue, 18 Oct 2011 01:28:57 +0200 Subject: [PATCH 09/15] Remove useless code since the extension is loaded into a privileged chrome:// scope --- .../firefox/components/pdfContentHandler.js | 105 +----------------- web/viewer.js | 15 --- 2 files changed, 2 insertions(+), 118 deletions(-) diff --git a/extensions/firefox/components/pdfContentHandler.js b/extensions/firefox/components/pdfContentHandler.js index 9186bfd8a..eda0ec92c 100644 --- a/extensions/firefox/components/pdfContentHandler.js +++ b/extensions/firefox/components/pdfContentHandler.js @@ -20,105 +20,6 @@ function log(aMsg) { dump(msg + '\n'); } -function fireEventTo(aName, aData, aWindow) { - let window = aWindow.wrappedJSObject; - let evt = window.document.createEvent('CustomEvent'); - evt.initCustomEvent('pdf' + aName, false, false, aData); - window.document.dispatchEvent(evt); -} - -function loadDocument(aWindow, aDocumentUrl) { - let xhr = Cc['@mozilla.org/xmlextras/xmlhttprequest;1'] - .createInstance(Ci.nsIXMLHttpRequest); - xhr.onprogress = function updateProgress(evt) { - if (evt.lengthComputable) - fireEventTo(evt.type, evt.loaded / evt.total, aWindow); - }; - - xhr.onerror = function error(evt) { - fireEventTo(evt.type, false, aWindow); - }; - - xhr.onload = function load(evt) { - let data = (xhr.mozResponseArrayBuffer || xhr.mozResponse || - xhr.responseArrayBuffer || xhr.response); - try { - let view = new Uint8Array(data); - - let window = aWindow.wrappedJSObject; - let arrayBuffer = new window.ArrayBuffer(data.byteLength); - let view2 = new window.Uint8Array(arrayBuffer); - view2.set(view); - - fireEventTo(evt.type, arrayBuffer, aWindow); - } catch (e) { - log('Error - ' + e); - } - }; - - xhr.open('GET', aDocumentUrl); - xhr.responseType = 'arraybuffer'; - xhr.send(null); -} - -let WebProgressListener = { - init: function WebProgressListenerInit(aWindow, aUrl) { - this._locationHasChanged = false; - this._documentUrl = aUrl; - - let flags = Ci.nsIWebProgress.NOTIFY_LOCATION | - Ci.nsIWebProgress.NOTIFY_STATE_NETWORK | - Ci.nsIWebProgress.NOTIFY_STATE_DOCUMENT; - - let docShell = aWindow.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIWebNavigation) - .QueryInterface(Ci.nsIDocShell); - let webProgress = docShell.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIWebProgress); - try { - webProgress.removeProgressListener(this); - } catch (e) {} - webProgress.addProgressListener(this, flags); - }, - - onStateChange: function onStateChange(aWebProgress, aRequest, aStateFlags, - aStatus) { - const complete = Ci.nsIWebProgressListener.STATE_IS_WINDOW + - Ci.nsIWebProgressListener.STATE_STOP; - if ((aStateFlags & complete) == complete && this._locationHasChanged) { - aWebProgress.removeProgressListener(this); - loadDocument(aWebProgress.DOMWindow, this._documentUrl); - } - }, - - onProgressChange: function onProgressChange(aWebProgress, aRequest, aCurSelf, - aMaxSelf, aCurTotal, aMaxTotal) { - }, - - onLocationChange: function onLocationChange(aWebProgress, aRequest, - aLocationURI) { - this._locationHasChanged = true; - }, - - onStatusChange: function onStatusChange(aWebProgress, aRequest, aStatus, - aMessage) { - }, - - onSecurityChange: function onSecurityChange(aWebProgress, aRequest, aState) { - }, - - QueryInterface: function QueryInterface(aIID) { - if (aIID.equals(Ci.nsIWebProgressListener) || - aIID.equals(Ci.nsISupportsWeakReference) || - aIID.equals(Ci.nsISupports)) { - return this; - } - - throw Components.results.NS_ERROR_NO_INTERFACE; - } -}; - - function pdfContentHandler() { } @@ -139,12 +40,11 @@ pdfContentHandler.prototype = { aRequest.cancel(Cr.NS_BINDING_ABORTED); let uri = aRequest.URI; - window = callbacks.getInterface(Ci.nsIDOMWindow); - WebProgressListener.init(window, uri.spec); - try { let url = Services.prefs.getCharPref('extensions.pdf.js.url'); url = url.replace('%s', uri.spec); + + window = callbacks.getInterface(Ci.nsIDOMWindow); window.location = url; } catch (e) { log('Error retrieving the pdf.js base url - ' + e); @@ -157,4 +57,3 @@ pdfContentHandler.prototype = { var NSGetFactory = XPCOMUtils.generateNSGetFactory([pdfContentHandler]); - diff --git a/web/viewer.js b/web/viewer.js index 91562baf4..4008d58e1 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -108,9 +108,6 @@ var PDFView = { }, open: function pdfViewOpen(url, scale) { - if (url.indexOf('http') == 0) - return; - document.title = url; getPdf( @@ -555,18 +552,6 @@ window.addEventListener('load', function webViewerLoad(evt) { document.getElementById('fileInput').value = null; }, true); -window.addEventListener('pdfload', function webViewerPdfload(evt) { - PDFView.load(evt.detail); -}, true); - -window.addEventListener('pdfprogress', function webViewerPdfProgress(evt) { - PDFView.progress(evt.detail); -}, true); - -window.addEventListener('pdferror', function webViewerPdfError(evt) { - PDFView.error(); -}, true); - function updateViewarea() { var visiblePages = PDFView.getVisiblePages(); for (var i = 0; i < visiblePages.length; i++) { From ecf831b44bb712dca16dfb1616140cc1faf99202 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Tue, 18 Oct 2011 20:32:33 +0300 Subject: [PATCH 10/15] Use task.pageLimit properly. --- test/driver.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/driver.js b/test/driver.js index b453c5051..4b42c40b5 100644 --- a/test/driver.js +++ b/test/driver.js @@ -87,7 +87,11 @@ function nextTask() { } function isLastPage(task) { - return task.pageNum > (task.pageLimit || task.pdfDoc.numPages); + var limit = task.pageLimit || 0; + if (!limit || limit > task.pdfDoc.numPages) + limit = task.pdfDoc.numPages; + + return task.pageNum > limit; } function canvasToDataURL() { From 20efacb3a1e2c137e7f7ef934bd8590331b21ece Mon Sep 17 00:00:00 2001 From: Vivien Nicolas <21@vingtetun.org> Date: Tue, 18 Oct 2011 21:40:59 +0200 Subject: [PATCH 11/15] Use 'hidden' instead of display: none --- web/viewer.css | 4 ++++ web/viewer.html | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/web/viewer.css b/web/viewer.css index 6c7b551e8..040b87bdf 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -8,6 +8,10 @@ body { padding: 0px; } +[hidden] { + display: none; +} + /* === Toolbar === */ #controls { background-color: #eee; diff --git a/web/viewer.html b/web/viewer.html index f761c94fe..4175d29fc 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -82,7 +82,7 @@
-