@ -141,6 +141,7 @@ let PDFViewerApplication = {
@@ -141,6 +141,7 @@ let PDFViewerApplication = {
pdfBugEnabled : false ,
showPreviousViewOnLoad : true ,
defaultZoomValue : '' ,
disablePageMode : false ,
disablePageLabels : false ,
renderer : 'canvas' ,
enhanceTextSelection : false ,
@ -255,6 +256,9 @@ let PDFViewerApplication = {
@@ -255,6 +256,9 @@ let PDFViewerApplication = {
preferences . get ( 'renderInteractiveForms' ) . then ( function resolved ( value ) {
viewerPrefs [ 'renderInteractiveForms' ] = value ;
} ) ,
preferences . get ( 'disablePageMode' ) . then ( function resolved ( value ) {
viewerPrefs [ 'disablePageMode' ] = value ;
} ) ,
preferences . get ( 'disablePageLabels' ) . then ( function resolved ( value ) {
viewerPrefs [ 'disablePageLabels' ] = value ;
} ) ,
@ -883,6 +887,11 @@ let PDFViewerApplication = {
@@ -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 . secondaryToolbar . setPagesCount ( pdfDocument . numPages ) ;
@ -939,9 +948,10 @@ let PDFViewerApplication = {
@@ -939,9 +948,10 @@ let PDFViewerApplication = {
scrollLeft : '0' ,
scrollTop : '0' ,
sidebarView : SidebarView . NONE ,
} ) . catch ( ( ) => { /* Unable to read from storage -- ignoring errors. */ } ) ;
} ) . catch ( ( ) => { /* Unable to read from storage; ignoring errors. */ } ) ;
storePromise . then ( ( values = { } ) => {
Promise . all ( [ storePromise , pageModePromise ] ) . then (
( [ values = { } , pageMode ] ) => {
// Initialize the default values, from user preferences.
let hash = this . viewerPrefs [ 'defaultZoomValue' ] ?
( 'zoom=' + this . viewerPrefs [ 'defaultZoomValue' ] ) : null ;
@ -953,6 +963,10 @@ let PDFViewerApplication = {
@@ -953,6 +963,10 @@ let PDFViewerApplication = {
',' + values . scrollLeft + ',' + values . scrollTop ;
sidebarView = sidebarView || ( values . sidebarView | 0 ) ;
}
if ( pageMode && ! this . viewerPrefs [ 'disablePageMode' ] ) {
// Always let the user preference/history take precedence.
sidebarView = sidebarView || apiPageModeToSidebarView ( pageMode ) ;
}
return {
hash ,
sidebarView ,
@ -2290,6 +2304,30 @@ function webViewerKeyDown(evt) {
@@ -2290,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. */
let PDFPrintServiceFactory = {
instance : {