|
|
@ -241,6 +241,8 @@ var PDFView = { |
|
|
|
sidebarOpen: false, |
|
|
|
sidebarOpen: false, |
|
|
|
pageViewScroll: null, |
|
|
|
pageViewScroll: null, |
|
|
|
thumbnailViewScroll: null, |
|
|
|
thumbnailViewScroll: null, |
|
|
|
|
|
|
|
isFullscreen: false, |
|
|
|
|
|
|
|
previousScale: null, |
|
|
|
|
|
|
|
|
|
|
|
// called once when the document is loaded
|
|
|
|
// called once when the document is loaded
|
|
|
|
initialize: function pdfViewInitialize() { |
|
|
|
initialize: function pdfViewInitialize() { |
|
|
@ -307,6 +309,7 @@ var PDFView = { |
|
|
|
|
|
|
|
|
|
|
|
var container = this.container; |
|
|
|
var container = this.container; |
|
|
|
var currentPage = this.pages[this.page - 1]; |
|
|
|
var currentPage = this.pages[this.page - 1]; |
|
|
|
|
|
|
|
|
|
|
|
var pageWidthScale = (container.clientWidth - kScrollbarPadding) / |
|
|
|
var pageWidthScale = (container.clientWidth - kScrollbarPadding) / |
|
|
|
currentPage.width * currentPage.scale / kCssUnits; |
|
|
|
currentPage.width * currentPage.scale / kCssUnits; |
|
|
|
var pageHeightScale = (container.clientHeight - kScrollbarPadding) / |
|
|
|
var pageHeightScale = (container.clientHeight - kScrollbarPadding) / |
|
|
@ -390,6 +393,17 @@ var PDFView = { |
|
|
|
return value; |
|
|
|
return value; |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
get supportsFullscreen() { |
|
|
|
|
|
|
|
var doc = document.documentElement; |
|
|
|
|
|
|
|
var support = doc.requestFullScreen || doc.mozRequestFullScreen || |
|
|
|
|
|
|
|
doc.webkitRequestFullScreen; |
|
|
|
|
|
|
|
Object.defineProperty(this, 'supportsFullScreen', { value: support, |
|
|
|
|
|
|
|
enumerable: true, |
|
|
|
|
|
|
|
configurable: true, |
|
|
|
|
|
|
|
writable: false }); |
|
|
|
|
|
|
|
return support; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
open: function pdfViewOpen(url, scale, password) { |
|
|
|
open: function pdfViewOpen(url, scale, password) { |
|
|
|
var parameters = {password: password}; |
|
|
|
var parameters = {password: password}; |
|
|
|
if (typeof url === 'string') { // URL
|
|
|
|
if (typeof url === 'string') { // URL
|
|
|
@ -786,7 +800,7 @@ var PDFView = { |
|
|
|
} |
|
|
|
} |
|
|
|
for (var i = 0; i < numVisible; ++i) { |
|
|
|
for (var i = 0; i < numVisible; ++i) { |
|
|
|
var view = visibleViews[i].view; |
|
|
|
var view = visibleViews[i].view; |
|
|
|
if (!this.isViewFinshed(view)) |
|
|
|
if (!this.isViewFinished(view)) |
|
|
|
return view; |
|
|
|
return view; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -795,19 +809,19 @@ var PDFView = { |
|
|
|
var lastVisible = visibleViews[visibleViews.length - 1]; |
|
|
|
var lastVisible = visibleViews[visibleViews.length - 1]; |
|
|
|
var nextPageIndex = lastVisible.id; |
|
|
|
var nextPageIndex = lastVisible.id; |
|
|
|
// ID's start at 1 so no need to add 1.
|
|
|
|
// ID's start at 1 so no need to add 1.
|
|
|
|
if (views[nextPageIndex] && !this.isViewFinshed(views[nextPageIndex])) |
|
|
|
if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) |
|
|
|
return views[nextPageIndex]; |
|
|
|
return views[nextPageIndex]; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
var previousPageIndex = visibleViews[0].id - 2; |
|
|
|
var previousPageIndex = visibleViews[0].id - 2; |
|
|
|
if (views[previousPageIndex] && |
|
|
|
if (views[previousPageIndex] && |
|
|
|
!this.isViewFinshed(views[previousPageIndex])) |
|
|
|
!this.isViewFinished(views[previousPageIndex])) |
|
|
|
return views[previousPageIndex]; |
|
|
|
return views[previousPageIndex]; |
|
|
|
} |
|
|
|
} |
|
|
|
// Everything that needs to be rendered has been.
|
|
|
|
// Everything that needs to be rendered has been.
|
|
|
|
return false; |
|
|
|
return false; |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
isViewFinshed: function pdfViewNeedsRendering(view) { |
|
|
|
isViewFinished: function pdfViewNeedsRendering(view) { |
|
|
|
return view.renderingState === RenderingStates.FINISHED; |
|
|
|
return view.renderingState === RenderingStates.FINISHED; |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
@ -1029,6 +1043,18 @@ var PDFView = { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var visible = []; |
|
|
|
var visible = []; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Algorithm broken in fullscreen mode
|
|
|
|
|
|
|
|
if (this.isFullscreen) { |
|
|
|
|
|
|
|
var currentPage = this.pages[this.page - 1]; |
|
|
|
|
|
|
|
visible.push({ |
|
|
|
|
|
|
|
id: currentPage.id, |
|
|
|
|
|
|
|
view: currentPage |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return visible; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var bottom = top + scrollEl.clientHeight; |
|
|
|
var bottom = top + scrollEl.clientHeight; |
|
|
|
for (; i <= views.length && currentHeight < bottom; ++i) { |
|
|
|
for (; i <= views.length && currentHeight < bottom; ++i) { |
|
|
|
view = views[i - 1]; |
|
|
|
view = views[i - 1]; |
|
|
@ -1072,6 +1098,44 @@ var PDFView = { |
|
|
|
var div = document.getElementById('printContainer'); |
|
|
|
var div = document.getElementById('printContainer'); |
|
|
|
while (div.hasChildNodes()) |
|
|
|
while (div.hasChildNodes()) |
|
|
|
div.removeChild(div.lastChild); |
|
|
|
div.removeChild(div.lastChild); |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fullscreen: function pdfViewFullscreen() { |
|
|
|
|
|
|
|
var isFullscreen = document.fullscreen || document.mozFullScreen || |
|
|
|
|
|
|
|
document.webkitIsFullScreen; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isFullscreen) { |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var wrapper = document.getElementById('viewerContainer'); |
|
|
|
|
|
|
|
if (document.documentElement.requestFullScreen) { |
|
|
|
|
|
|
|
wrapper.requestFullScreen(); |
|
|
|
|
|
|
|
} else if (document.documentElement.mozRequestFullScreen) { |
|
|
|
|
|
|
|
wrapper.mozRequestFullScreen(); |
|
|
|
|
|
|
|
} else if (document.documentElement.webkitRequestFullScreen) { |
|
|
|
|
|
|
|
wrapper.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.isFullscreen = true; |
|
|
|
|
|
|
|
var currentPage = this.pages[this.page - 1]; |
|
|
|
|
|
|
|
this.previousScale = this.currentScaleValue; |
|
|
|
|
|
|
|
this.parseScale('page-fit', true); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Wait for fullscreen to take effect
|
|
|
|
|
|
|
|
setTimeout(function() { |
|
|
|
|
|
|
|
currentPage.scrollIntoView(); |
|
|
|
|
|
|
|
}, 0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exitFullscreen: function pdfViewExitFullscreen() { |
|
|
|
|
|
|
|
this.isFullscreen = false; |
|
|
|
|
|
|
|
this.parseScale(this.previousScale); |
|
|
|
|
|
|
|
this.page = this.page; |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@ -1785,6 +1849,10 @@ window.addEventListener('load', function webViewerLoad(evt) { |
|
|
|
document.getElementById('print').classList.add('hidden'); |
|
|
|
document.getElementById('print').classList.add('hidden'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!PDFView.supportsFullscreen) { |
|
|
|
|
|
|
|
document.getElementById('fullscreen').classList.add('hidden'); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Listen for warnings to trigger the fallback UI. Errors should be caught
|
|
|
|
// Listen for warnings to trigger the fallback UI. Errors should be caught
|
|
|
|
// and call PDFView.error() so we don't need to listen for those.
|
|
|
|
// and call PDFView.error() so we don't need to listen for those.
|
|
|
|
PDFJS.LogManager.addLogger({ |
|
|
|
PDFJS.LogManager.addLogger({ |
|
|
@ -1823,11 +1891,14 @@ function updateViewarea() { |
|
|
|
|
|
|
|
|
|
|
|
PDFView.renderHighestPriority(); |
|
|
|
PDFView.renderHighestPriority(); |
|
|
|
|
|
|
|
|
|
|
|
updateViewarea.inProgress = true; // used in "set page"
|
|
|
|
|
|
|
|
var currentId = PDFView.page; |
|
|
|
var currentId = PDFView.page; |
|
|
|
var firstPage = visiblePages[0]; |
|
|
|
var firstPage = visiblePages[0]; |
|
|
|
PDFView.page = firstPage.id; |
|
|
|
|
|
|
|
updateViewarea.inProgress = false; |
|
|
|
if (!PDFView.isFullscreen) { |
|
|
|
|
|
|
|
updateViewarea.inProgress = true; // used in "set page"
|
|
|
|
|
|
|
|
PDFView.page = firstPage.id; |
|
|
|
|
|
|
|
updateViewarea.inProgress = false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var currentScale = PDFView.currentScale; |
|
|
|
var currentScale = PDFView.currentScale; |
|
|
|
var currentScaleValue = PDFView.currentScaleValue; |
|
|
|
var currentScaleValue = PDFView.currentScaleValue; |
|
|
@ -2013,7 +2084,7 @@ window.addEventListener('keydown', function keydown(evt) { |
|
|
|
return; |
|
|
|
return; |
|
|
|
var controlsElement = document.getElementById('controls'); |
|
|
|
var controlsElement = document.getElementById('controls'); |
|
|
|
while (curElement) { |
|
|
|
while (curElement) { |
|
|
|
if (curElement === controlsElement) |
|
|
|
if (curElement === controlsElement && !PDFView.isFullscreen) |
|
|
|
return; // ignoring if the 'controls' element is focused
|
|
|
|
return; // ignoring if the 'controls' element is focused
|
|
|
|
curElement = curElement.parentNode; |
|
|
|
curElement = curElement.parentNode; |
|
|
|
} |
|
|
|
} |
|
|
@ -2032,6 +2103,13 @@ window.addEventListener('keydown', function keydown(evt) { |
|
|
|
PDFView.page++; |
|
|
|
PDFView.page++; |
|
|
|
handled = true; |
|
|
|
handled = true; |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 32: // spacebar
|
|
|
|
|
|
|
|
if (PDFView.isFullscreen) { |
|
|
|
|
|
|
|
PDFView.page++; |
|
|
|
|
|
|
|
handled = true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -2047,3 +2125,18 @@ window.addEventListener('beforeprint', function beforePrint(evt) { |
|
|
|
window.addEventListener('afterprint', function afterPrint(evt) { |
|
|
|
window.addEventListener('afterprint', function afterPrint(evt) { |
|
|
|
PDFView.afterPrint(); |
|
|
|
PDFView.afterPrint(); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function fullscreenClosure() { |
|
|
|
|
|
|
|
function fullscreenChange(e) { |
|
|
|
|
|
|
|
var isFullscreen = document.fullscreen || document.mozFullScreen || |
|
|
|
|
|
|
|
document.webkitIsFullScreen; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!isFullscreen) { |
|
|
|
|
|
|
|
PDFView.exitFullscreen(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
window.addEventListener('fullscreenchange', fullscreenChange, false); |
|
|
|
|
|
|
|
window.addEventListener('mozfullscreenchange', fullscreenChange, false); |
|
|
|
|
|
|
|
window.addEventListener('webkitfullscreenchange', fullscreenChange, false); |
|
|
|
|
|
|
|
})(); |
|
|
|