ReaderControl.prototype.getFitPageZoom = function(pageIndex) { var me = this; var totalPageWidth = 0;
me.forEachPageInWrapper(pageIndex, function(i) { var page = me.doc.getPageInfo(i);
totalPageWidth += page.width; });
return window.innerWidth / totalPageWidth;};
$(document).on('viewerLoaded', function() {
var docViewer = readerControl.docViewer;
docViewer.on('pageNumberUpdated', function(e, pageNumber) {
setPageFitWidth(pageNumber);
});
docViewer.on('documentLoaded', function() {
setPageFitWidth(1);
});
});
function setPageFitWidth(pageNumber) {
var docViewer = readerControl.docViewer;
var totalPageWidth = 0;
var currentZoom = docViewer.getZoom();
var doc = docViewer.getDocument();
readerControl.forEachPageInWrapper(pageNumber - 1, function(i) {
var page = doc.getPageInfo(i);
totalPageWidth += page.width * currentZoom;
});
var zoomChange = window.innerWidth / totalPageWidth;
readerControl.setZoomLevel(zoomChange * currentZoom, false);
}
$(document).on('viewerLoaded', function() {
var docViewer = readerControl.docViewer;
docViewer.on('pageNumberUpdated', function(e, pageNumber) {
zoomToFitWidth(pageNumber, 0, 0);
});
docViewer.on('documentLoaded', function() {
zoomToFitWidth(1, 0, 0);
});
});
function getFitWidth(pageNumber) {
var docViewer = readerControl.docViewer;
var totalPageWidth = 0;
var currentZoom = docViewer.getZoom();
var doc = docViewer.getDocument();
readerControl.forEachPageInWrapper(pageNumber - 1, function(i) {
var page = doc.getPageInfo(i);
totalPageWidth += page.width * currentZoom;
});
var zoomChange = window.innerWidth / totalPageWidth;
return zoomChange * currentZoom;
}
function zoomToFitWidth(pageNumber, x, y) {
var pageIndex = pageNumber - 1;
var currentZoom = readerControl.docViewer.getPageZoom(pageIndex);
var newPageZoom = getFitWidth(pageNumber);
var offset = readerControl.c.$e.offset();
var width = readerControl.c.$e.width();
var height = readerControl.c.$e.height();
var locX = (x - offset.left) - width / 2;
var locY = (y - offset.top) - height / 2;
var scaledLocX = locX * (newPageZoom / currentZoom);
var scaledLocY = locY * (newPageZoom / currentZoom);
var offsetX = locX - scaledLocX;
var offsetY = locY - scaledLocY;
readerControl.c.tX += offsetX;
readerControl.c.tY += offsetY;
readerControl.setZoomLevel(newPageZoom, false);
}