|
|
@ -141,6 +141,7 @@ let PDFViewerApplication = { |
|
|
|
pdfBugEnabled: false, |
|
|
|
pdfBugEnabled: false, |
|
|
|
showPreviousViewOnLoad: true, |
|
|
|
showPreviousViewOnLoad: true, |
|
|
|
defaultZoomValue: '', |
|
|
|
defaultZoomValue: '', |
|
|
|
|
|
|
|
disablePageMode: false, |
|
|
|
disablePageLabels: false, |
|
|
|
disablePageLabels: false, |
|
|
|
renderer: 'canvas', |
|
|
|
renderer: 'canvas', |
|
|
|
enhanceTextSelection: false, |
|
|
|
enhanceTextSelection: false, |
|
|
@ -255,6 +256,9 @@ let PDFViewerApplication = { |
|
|
|
preferences.get('renderInteractiveForms').then(function resolved(value) { |
|
|
|
preferences.get('renderInteractiveForms').then(function resolved(value) { |
|
|
|
viewerPrefs['renderInteractiveForms'] = value; |
|
|
|
viewerPrefs['renderInteractiveForms'] = value; |
|
|
|
}), |
|
|
|
}), |
|
|
|
|
|
|
|
preferences.get('disablePageMode').then(function resolved(value) { |
|
|
|
|
|
|
|
viewerPrefs['disablePageMode'] = value; |
|
|
|
|
|
|
|
}), |
|
|
|
preferences.get('disablePageLabels').then(function resolved(value) { |
|
|
|
preferences.get('disablePageLabels').then(function resolved(value) { |
|
|
|
viewerPrefs['disablePageLabels'] = value; |
|
|
|
viewerPrefs['disablePageLabels'] = value; |
|
|
|
}), |
|
|
|
}), |
|
|
@ -883,6 +887,11 @@ let PDFViewerApplication = { |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Since the `setInitialView` call below depends on this being resolved,
|
|
|
|
|
|
|
|
// fetch it early to avoid delaying initial rendering of the PDF document.
|
|
|
|
|
|
|
|
let pageModePromise = pdfDocument.getPageMode().catch( |
|
|
|
|
|
|
|
function() { /* Avoid breaking initial rendering; ignoring errors. */ }); |
|
|
|
|
|
|
|
|
|
|
|
this.toolbar.setPagesCount(pdfDocument.numPages, false); |
|
|
|
this.toolbar.setPagesCount(pdfDocument.numPages, false); |
|
|
|
this.secondaryToolbar.setPagesCount(pdfDocument.numPages); |
|
|
|
this.secondaryToolbar.setPagesCount(pdfDocument.numPages); |
|
|
|
|
|
|
|
|
|
|
@ -932,37 +941,39 @@ let PDFViewerApplication = { |
|
|
|
bookmark: this.initialBookmark, |
|
|
|
bookmark: this.initialBookmark, |
|
|
|
hash: null, |
|
|
|
hash: null, |
|
|
|
}; |
|
|
|
}; |
|
|
|
let storedHash = this.viewerPrefs['defaultZoomValue'] ? |
|
|
|
let storePromise = store.getMultiple({ |
|
|
|
('zoom=' + this.viewerPrefs['defaultZoomValue']) : null; |
|
|
|
exists: false, |
|
|
|
let sidebarView = this.viewerPrefs['sidebarViewOnLoad']; |
|
|
|
page: '1', |
|
|
|
|
|
|
|
zoom: DEFAULT_SCALE_VALUE, |
|
|
|
new Promise((resolve, reject) => { |
|
|
|
scrollLeft: '0', |
|
|
|
if (!this.viewerPrefs['showPreviousViewOnLoad']) { |
|
|
|
scrollTop: '0', |
|
|
|
resolve(); |
|
|
|
sidebarView: SidebarView.NONE, |
|
|
|
return; |
|
|
|
}).catch(() => { /* Unable to read from storage; ignoring errors. */ }); |
|
|
|
} |
|
|
|
|
|
|
|
store.getMultiple({ |
|
|
|
Promise.all([storePromise, pageModePromise]).then( |
|
|
|
exists: false, |
|
|
|
([values = {}, pageMode]) => { |
|
|
|
page: '1', |
|
|
|
// Initialize the default values, from user preferences.
|
|
|
|
zoom: DEFAULT_SCALE_VALUE, |
|
|
|
let hash = this.viewerPrefs['defaultZoomValue'] ? |
|
|
|
scrollLeft: '0', |
|
|
|
('zoom=' + this.viewerPrefs['defaultZoomValue']) : null; |
|
|
|
scrollTop: '0', |
|
|
|
let sidebarView = this.viewerPrefs['sidebarViewOnLoad']; |
|
|
|
sidebarView: SidebarView.NONE, |
|
|
|
|
|
|
|
}).then((values) => { |
|
|
|
if (values.exists && this.viewerPrefs['showPreviousViewOnLoad']) { |
|
|
|
if (!values.exists) { |
|
|
|
hash = 'page=' + values.page + |
|
|
|
resolve(); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
storedHash = 'page=' + values.page + |
|
|
|
|
|
|
|
'&zoom=' + (this.viewerPrefs['defaultZoomValue'] || values.zoom) + |
|
|
|
'&zoom=' + (this.viewerPrefs['defaultZoomValue'] || values.zoom) + |
|
|
|
',' + values.scrollLeft + ',' + values.scrollTop; |
|
|
|
',' + values.scrollLeft + ',' + values.scrollTop; |
|
|
|
sidebarView = this.viewerPrefs['sidebarViewOnLoad'] || |
|
|
|
sidebarView = sidebarView || (values.sidebarView | 0); |
|
|
|
(values.sidebarView | 0); |
|
|
|
} |
|
|
|
resolve(); |
|
|
|
if (pageMode && !this.viewerPrefs['disablePageMode']) { |
|
|
|
}).catch(resolve); |
|
|
|
// Always let the user preference/history take precedence.
|
|
|
|
}).then(() => { |
|
|
|
sidebarView = sidebarView || apiPageModeToSidebarView(pageMode); |
|
|
|
this.setInitialView(storedHash, { sidebarView, scale, }); |
|
|
|
} |
|
|
|
initialParams.hash = storedHash; |
|
|
|
return { |
|
|
|
|
|
|
|
hash, |
|
|
|
|
|
|
|
sidebarView, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
}).then(({ hash, sidebarView, }) => { |
|
|
|
|
|
|
|
this.setInitialView(hash, { sidebarView, scale, }); |
|
|
|
|
|
|
|
initialParams.hash = hash; |
|
|
|
|
|
|
|
|
|
|
|
// Make all navigation keys work on document load,
|
|
|
|
// Make all navigation keys work on document load,
|
|
|
|
// unless the viewer is embedded in a web page.
|
|
|
|
// unless the viewer is embedded in a web page.
|
|
|
@ -2293,6 +2304,30 @@ function webViewerKeyDown(evt) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Converts API PageMode values to the format used by `PDFSidebar`. |
|
|
|
|
|
|
|
* NOTE: There's also a "FullScreen" parameter which is not possible to support, |
|
|
|
|
|
|
|
* since the Fullscreen API used in browsers requires that entering |
|
|
|
|
|
|
|
* fullscreen mode only occurs as a result of a user-initiated event. |
|
|
|
|
|
|
|
* @param {string} mode - The API PageMode value. |
|
|
|
|
|
|
|
* @returns {number} A value from {SidebarView}. |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
function apiPageModeToSidebarView(mode) { |
|
|
|
|
|
|
|
switch (mode) { |
|
|
|
|
|
|
|
case 'UseNone': |
|
|
|
|
|
|
|
return SidebarView.NONE; |
|
|
|
|
|
|
|
case 'UseThumbs': |
|
|
|
|
|
|
|
return SidebarView.THUMBS; |
|
|
|
|
|
|
|
case 'UseOutlines': |
|
|
|
|
|
|
|
return SidebarView.OUTLINE; |
|
|
|
|
|
|
|
case 'UseAttachments': |
|
|
|
|
|
|
|
return SidebarView.ATTACHMENTS; |
|
|
|
|
|
|
|
case 'UseOC': |
|
|
|
|
|
|
|
// Not implemented, since we don't support Optional Content Groups yet.
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return SidebarView.NONE; // Default value.
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Abstract factory for the print service. */ |
|
|
|
/* Abstract factory for the print service. */ |
|
|
|
let PDFPrintServiceFactory = { |
|
|
|
let PDFPrintServiceFactory = { |
|
|
|
instance: { |
|
|
|
instance: { |
|
|
|