diff --git a/web/app.js b/web/app.js index 23179622c..f44783022 100644 --- a/web/app.js +++ b/web/app.js @@ -396,15 +396,15 @@ var PDFViewerApplication = { }, get pagesCount() { - return this.pdfDocument.numPages; + return this.pdfDocument ? this.pdfDocument.numPages : 0; }, set page(val) { - this.pdfLinkService.page = val; + this.pdfViewer.currentPageNumber = val; }, - get page() { // TODO remove - return this.pdfLinkService.page; + get page() { + return this.pdfViewer.currentPageNumber; }, get supportsPrinting() { @@ -1496,30 +1496,25 @@ function webViewerInitialized() { } }, true); - appConfig.sidebar.toggleButton.addEventListener('click', - function() { - PDFViewerApplication.pdfSidebar.toggle(); - }); + appConfig.sidebar.toggleButton.addEventListener('click', function() { + PDFViewerApplication.pdfSidebar.toggle(); + }); - appConfig.toolbar.previous.addEventListener('click', - function() { - PDFViewerApplication.page--; - }); + appConfig.toolbar.previous.addEventListener('click', function() { + PDFViewerApplication.page--; + }); - appConfig.toolbar.next.addEventListener('click', - function() { - PDFViewerApplication.page++; - }); + appConfig.toolbar.next.addEventListener('click', function() { + PDFViewerApplication.page++; + }); - appConfig.toolbar.zoomIn.addEventListener('click', - function() { - PDFViewerApplication.zoomIn(); - }); + appConfig.toolbar.zoomIn.addEventListener('click', function() { + PDFViewerApplication.zoomIn(); + }); - appConfig.toolbar.zoomOut.addEventListener('click', - function() { - PDFViewerApplication.zoomOut(); - }); + appConfig.toolbar.zoomOut.addEventListener('click', function() { + PDFViewerApplication.zoomOut(); + }); appConfig.toolbar.pageNumber.addEventListener('click', function() { this.select(); @@ -2187,7 +2182,9 @@ window.addEventListener('keydown', function keydown(evt) { /* falls through */ case 75: // 'k' case 80: // 'p' - PDFViewerApplication.page--; + if (PDFViewerApplication.page > 1) { + PDFViewerApplication.page--; + } handled = true; break; case 27: // esc key @@ -2217,7 +2214,9 @@ window.addEventListener('keydown', function keydown(evt) { /* falls through */ case 74: // 'j' case 78: // 'n' - PDFViewerApplication.page++; + if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page++; + } handled = true; break; @@ -2229,8 +2228,8 @@ window.addEventListener('keydown', function keydown(evt) { } break; case 35: // end - if (isViewerInPresentationMode || (PDFViewerApplication.pdfDocument && - PDFViewerApplication.page < PDFViewerApplication.pagesCount)) { + if (isViewerInPresentationMode || + PDFViewerApplication.page < PDFViewerApplication.pagesCount) { PDFViewerApplication.page = PDFViewerApplication.pagesCount; handled = true; ensureViewerFocused = true; @@ -2255,7 +2254,9 @@ window.addEventListener('keydown', function keydown(evt) { pdfViewer.currentScaleValue !== 'page-fit') { break; } - PDFViewerApplication.page--; + if (PDFViewerApplication.page > 1) { + PDFViewerApplication.page--; + } handled = true; break; diff --git a/web/pdf_link_service.js b/web/pdf_link_service.js index c75858be2..8263bc1a2 100644 --- a/web/pdf_link_service.js +++ b/web/pdf_link_service.js @@ -80,7 +80,7 @@ var PDFLinkService = (function PDFLinkServiceClosure() { * @returns {number} */ get pagesCount() { - return this.pdfDocument.numPages; + return this.pdfDocument ? this.pdfDocument.numPages : 0; }, /** @@ -111,7 +111,9 @@ var PDFLinkService = (function PDFLinkServiceClosure() { (destRef + 1); if (pageNumber) { if (pageNumber > self.pagesCount) { - pageNumber = self.pagesCount; + console.error('PDFLinkService_navigateTo: ' + + 'Trying to navigate to a non-existent page.'); + return; } self.pdfViewer.scrollPageIntoView(pageNumber, dest); @@ -288,11 +290,15 @@ var PDFLinkService = (function PDFLinkServiceClosure() { break; case 'NextPage': - this.page++; + if (this.page < this.pagesCount) { + this.page++; + } break; case 'PrevPage': - this.page--; + if (this.page > 1) { + this.page--; + } break; case 'LastPage': diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index afd4925b3..46ee55d99 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -181,7 +181,7 @@ var PDFViewer = (function pdfViewer() { * @private */ _setCurrentPageNumber: - function pdfViewer_setCurrentPageNumber(val, resetCurrentPageView) { + function PDFViewer_setCurrentPageNumber(val, resetCurrentPageView) { if (this._currentPageNumber === val) { if (resetCurrentPageView) { this._resetCurrentPageView(); @@ -190,6 +190,8 @@ var PDFViewer = (function pdfViewer() { } if (!(0 < val && val <= this.pagesCount)) { + console.error('PDFViewer_setCurrentPageNumber: "' + val + + '" is out of bounds.'); return; } @@ -467,7 +469,7 @@ var PDFViewer = (function pdfViewer() { } }, - _setScale: function pdfViewer_setScale(value, noScroll) { + _setScale: function PDFViewer_setScale(value, noScroll) { var scale = parseFloat(value); if (scale > 0) { @@ -507,8 +509,8 @@ var PDFViewer = (function pdfViewer() { scale = Math.min(MAX_AUTO_SCALE, horizontalScale); break; default: - console.error('pdfViewSetScale: \'' + value + - '\' is an unknown zoom value.'); + console.error('PDFViewer_setScale: "' + value + + '" is an unknown zoom value.'); return; } this._setScaleUpdatePages(scale, value, noScroll, true);