|
|
|
@ -1229,7 +1229,7 @@ var PDFFindController = (function PDFFindControllerClosure() {
@@ -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() {
@@ -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() {
@@ -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() {
@@ -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() {
@@ -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: <page-ref> </XYZ|/FitXXX> <args..> |
|
|
|
|
* @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: |
|
|
|
|
* <page-ref> </XYZ|FitXXX> <args..> |
|
|
|
|
* @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() {
@@ -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() {
@@ -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 }); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|