From d48eea793fc5371468076bd74b6937bca8d7ac86 Mon Sep 17 00:00:00 2001 From: Pdf Bot Date: Sun, 28 Aug 2016 14:50:37 +0100 Subject: [PATCH] PDF.js version 1.5.402 - See mozilla/pdf.js@b0a0bef267f54d2f22dd41b1840de21402234760 --- bower.json | 2 +- build/pdf.combined.js | 4 +-- build/pdf.js | 4 +-- build/pdf.worker.js | 4 +-- package.json | 2 +- web/pdf_viewer.js | 61 ++++++++++++++++++++++++++++++++++++------- 6 files changed, 60 insertions(+), 17 deletions(-) diff --git a/bower.json b/bower.json index 7a3fd78b7..34ec3d19e 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "pdfjs-dist", - "version": "1.5.399", + "version": "1.5.402", "main": [ "build/pdf.js", "build/pdf.worker.js" diff --git a/build/pdf.combined.js b/build/pdf.combined.js index ef95cc1ae..352e17975 100644 --- a/build/pdf.combined.js +++ b/build/pdf.combined.js @@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfCombined = {})); // Use strict in our context only - users might not want it 'use strict'; -var pdfjsVersion = '1.5.399'; -var pdfjsBuild = 'f520616'; +var pdfjsVersion = '1.5.402'; +var pdfjsBuild = 'b0a0bef'; var pdfjsFilePath = typeof document !== 'undefined' && document.currentScript ? diff --git a/build/pdf.js b/build/pdf.js index 854b1cf33..00ba16783 100644 --- a/build/pdf.js +++ b/build/pdf.js @@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdf = {})); // Use strict in our context only - users might not want it 'use strict'; -var pdfjsVersion = '1.5.399'; -var pdfjsBuild = 'f520616'; +var pdfjsVersion = '1.5.402'; +var pdfjsBuild = 'b0a0bef'; var pdfjsFilePath = typeof document !== 'undefined' && document.currentScript ? diff --git a/build/pdf.worker.js b/build/pdf.worker.js index 093144b0c..e1fe09fb7 100644 --- a/build/pdf.worker.js +++ b/build/pdf.worker.js @@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfWorker = {})); // Use strict in our context only - users might not want it 'use strict'; -var pdfjsVersion = '1.5.399'; -var pdfjsBuild = 'f520616'; +var pdfjsVersion = '1.5.402'; +var pdfjsBuild = 'b0a0bef'; var pdfjsFilePath = typeof document !== 'undefined' && document.currentScript ? diff --git a/package.json b/package.json index a85054857..b56db4c44 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pdfjs-dist", - "version": "1.5.399", + "version": "1.5.402", "main": "build/pdf.js", "description": "Generic build of Mozilla's PDF.js library.", "keywords": [ diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index db470ef06..5388b3b34 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -1229,7 +1229,7 @@ var PDFFindController = (function PDFFindControllerClosure() { // If the page is selected, scroll the page into view, which triggers // rendering the page, which adds the textLayer. Once the textLayer is // build, it will scroll onto the selected match. - this.pdfViewer.scrollPageIntoView(index + 1); + this.pdfViewer.currentPageNumber = index + 1; } var page = this.pdfViewer.getPageView(index); @@ -1924,7 +1924,10 @@ var PDFLinkService = (function PDFLinkServiceClosure() { 'Trying to navigate to a non-existent page.'); return; } - self.pdfViewer.scrollPageIntoView(pageNumber, dest); + self.pdfViewer.scrollPageIntoView({ + pageNumber: pageNumber, + destArray: dest, + }); if (self.pdfHistory) { // Update the browsing history. @@ -2050,7 +2053,11 @@ var PDFLinkService = (function PDFLinkServiceClosure() { } } if (dest) { - this.pdfViewer.scrollPageIntoView(pageNumber || this.page, dest); + this.pdfViewer.scrollPageIntoView({ + pageNumber: pageNumber || this.page, + destArray: dest, + allowNegativeOffset: true, + }); } else if (pageNumber) { this.page = pageNumber; // simple page } @@ -3724,7 +3731,11 @@ var PDFViewer = (function pdfViewer() { dest = [null, { name: 'XYZ' }, this._location.left, this._location.top, null]; } - this.scrollPageIntoView(page, dest); + this.scrollPageIntoView({ + pageNumber: page, + destArray: dest, + allowNegativeOffset: true, + }); } this._setScaleDispatchEvent(newScale, newValue, preset); @@ -3796,17 +3807,37 @@ var PDFViewer = (function pdfViewer() { scrollIntoView(pageView.div); }, + /** + * @typedef ScrollPageIntoViewParameters + * @param {number} pageNumber - The page number. + * @param {Array} destArray - (optional) The original PDF destination array, + * in the format: + * @param {boolean} allowNegativeOffset - (optional) Allow negative page + * offsets. The default value is `false`. + */ + /** * Scrolls page into view. - * @param {number} pageNumber - * @param {Array} dest - (optional) original PDF destination array: - * + * @param {ScrollPageIntoViewParameters} params */ - scrollPageIntoView: function PDFViewer_scrollPageIntoView(pageNumber, - dest) { + scrollPageIntoView: function PDFViewer_scrollPageIntoView(params) { if (!this.pdfDocument) { return; } + if (arguments.length > 1 || typeof params === 'number') { + console.warn('Call of scrollPageIntoView() with obsolete signature.'); + var paramObj = {}; + if (typeof params === 'number') { + paramObj.pageNumber = params; // pageNumber argument was found. + } + if (arguments[1] instanceof Array) { + paramObj.destArray = arguments[1]; // destArray argument was found. + } + params = paramObj; + } + var pageNumber = params.pageNumber || 0; + var dest = params.destArray || null; + var allowNegativeOffset = params.allowNegativeOffset || false; if (this.isInPresentationMode || !dest) { this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView */ true); @@ -3814,6 +3845,11 @@ var PDFViewer = (function pdfViewer() { } var pageView = this._pages[pageNumber - 1]; + if (!pageView) { + console.error('PDFViewer_scrollPageIntoView: ' + + 'Invalid "pageNumber" parameter.'); + return; + } var x = 0, y = 0; var width = 0, height = 0, widthScale, heightScale; var changeOrientation = (pageView.rotation % 180 === 0 ? false : true); @@ -3894,6 +3930,13 @@ var PDFViewer = (function pdfViewer() { var left = Math.min(boundingRect[0][0], boundingRect[1][0]); var top = Math.min(boundingRect[0][1], boundingRect[1][1]); + if (!allowNegativeOffset) { + // Some bad PDF generators will create destinations with e.g. top values + // that exceeds the page height. Ensure that offsets are not negative, + // to prevent a previous page from becoming visible (fixes bug 874482). + left = Math.max(left, 0); + top = Math.max(top, 0); + } scrollIntoView(pageView.div, { left: left, top: top }); },