|
|
|
@ -193,9 +193,124 @@ var PDFViewerApplication = {
@@ -193,9 +193,124 @@ var PDFViewerApplication = {
|
|
|
|
|
|
|
|
|
|
// called once when the document is loaded
|
|
|
|
|
initialize: function pdfViewInitialize(appConfig) { |
|
|
|
|
var self = this; |
|
|
|
|
var PDFJS = pdfjsLib.PDFJS; |
|
|
|
|
|
|
|
|
|
configure(pdfjsLib.PDFJS); |
|
|
|
|
this.appConfig = appConfig; |
|
|
|
|
|
|
|
|
|
Preferences.initialize(); |
|
|
|
|
this.preferences = Preferences; |
|
|
|
|
|
|
|
|
|
this._initializeViewerComponents(); |
|
|
|
|
|
|
|
|
|
return this._readPreferences().then(function () { |
|
|
|
|
if (self.isViewerEmbedded && !PDFJS.isExternalLinkTargetSet()) { |
|
|
|
|
// Prevent external links from "replacing" the viewer,
|
|
|
|
|
// when it's embedded in e.g. an iframe or an object.
|
|
|
|
|
PDFJS.externalLinkTarget = PDFJS.LinkTarget.TOP; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
self.initialized = true; |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @private |
|
|
|
|
*/ |
|
|
|
|
_readPreferences: function () { |
|
|
|
|
var self = this; |
|
|
|
|
var PDFJS = pdfjsLib.PDFJS; |
|
|
|
|
|
|
|
|
|
return Promise.all([ |
|
|
|
|
Preferences.get('enableWebGL').then(function resolved(value) { |
|
|
|
|
PDFJS.disableWebGL = !value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('sidebarViewOnLoad').then(function resolved(value) { |
|
|
|
|
self.preferenceSidebarViewOnLoad = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('pdfBugEnabled').then(function resolved(value) { |
|
|
|
|
self.preferencePdfBugEnabled = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('showPreviousViewOnLoad').then(function resolved(value) { |
|
|
|
|
self.preferenceShowPreviousViewOnLoad = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('defaultZoomValue').then(function resolved(value) { |
|
|
|
|
self.preferenceDefaultZoomValue = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('enhanceTextSelection').then(function resolved(value) { |
|
|
|
|
// TODO: Move the initialization and fetching of `Preferences` to occur
|
|
|
|
|
// before the various viewer components are initialized.
|
|
|
|
|
//
|
|
|
|
|
// This was attempted in: https://github.com/mozilla/pdf.js/pull/7586,
|
|
|
|
|
// but it had to be backed out since it violated implicit assumptions
|
|
|
|
|
// about some viewer components being synchronously available.
|
|
|
|
|
//
|
|
|
|
|
// NOTE: This hack works since the `enhanceTextSelection` option is not
|
|
|
|
|
// needed until `PDFViewer.setDocument` has been called.
|
|
|
|
|
self.pdfViewer.enhanceTextSelection = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disableTextLayer').then(function resolved(value) { |
|
|
|
|
if (PDFJS.disableTextLayer === true) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
PDFJS.disableTextLayer = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disableRange').then(function resolved(value) { |
|
|
|
|
if (PDFJS.disableRange === true) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
PDFJS.disableRange = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disableStream').then(function resolved(value) { |
|
|
|
|
if (PDFJS.disableStream === true) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
PDFJS.disableStream = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disableAutoFetch').then(function resolved(value) { |
|
|
|
|
PDFJS.disableAutoFetch = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disableFontFace').then(function resolved(value) { |
|
|
|
|
if (PDFJS.disableFontFace === true) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
PDFJS.disableFontFace = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('useOnlyCssZoom').then(function resolved(value) { |
|
|
|
|
PDFJS.useOnlyCssZoom = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('externalLinkTarget').then(function resolved(value) { |
|
|
|
|
if (PDFJS.isExternalLinkTargetSet()) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
PDFJS.externalLinkTarget = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('renderer').then(function resolved(value) { |
|
|
|
|
// TODO: Like the `enhanceTextSelection` preference, move the
|
|
|
|
|
// initialization and fetching of `Preferences` to occur
|
|
|
|
|
// before the various viewer components are initialized.
|
|
|
|
|
self.pdfViewer.renderer = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('renderInteractiveForms').then(function resolved(value) { |
|
|
|
|
// TODO: Like the `enhanceTextSelection` preference, move the
|
|
|
|
|
// initialization and fetching of `Preferences` to occur
|
|
|
|
|
// before the various viewer components are initialized.
|
|
|
|
|
self.pdfViewer.renderInteractiveForms = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disablePageLabels').then(function resolved(value) { |
|
|
|
|
self.preferenceDisablePageLabels = value; |
|
|
|
|
}), |
|
|
|
|
// TODO move more preferences and other async stuff here
|
|
|
|
|
]).catch(function (reason) { }); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @private |
|
|
|
|
*/ |
|
|
|
|
_initializeViewerComponents: function () { |
|
|
|
|
var appConfig = this.appConfig; |
|
|
|
|
|
|
|
|
|
var eventBus = appConfig.eventBus || getGlobalEventBus(); |
|
|
|
|
this.eventBus = eventBus; |
|
|
|
|
this.bindEvents(); |
|
|
|
@ -235,9 +350,6 @@ var PDFViewerApplication = {
@@ -235,9 +350,6 @@ var PDFViewerApplication = {
|
|
|
|
|
}); |
|
|
|
|
pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer); |
|
|
|
|
|
|
|
|
|
Preferences.initialize(); |
|
|
|
|
this.preferences = Preferences; |
|
|
|
|
|
|
|
|
|
this.pdfHistory = new PDFHistory({ |
|
|
|
|
linkService: pdfLinkService, |
|
|
|
|
eventBus: this.eventBus |
|
|
|
@ -317,100 +429,6 @@ var PDFViewerApplication = {
@@ -317,100 +429,6 @@ var PDFViewerApplication = {
|
|
|
|
|
sidebarConfig.eventBus = this.eventBus; |
|
|
|
|
this.pdfSidebar = new PDFSidebar(sidebarConfig); |
|
|
|
|
this.pdfSidebar.onToggled = this.forceRendering.bind(this); |
|
|
|
|
|
|
|
|
|
var self = this; |
|
|
|
|
var PDFJS = pdfjsLib.PDFJS; |
|
|
|
|
var initializedPromise = Promise.all([ |
|
|
|
|
Preferences.get('enableWebGL').then(function resolved(value) { |
|
|
|
|
PDFJS.disableWebGL = !value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('sidebarViewOnLoad').then(function resolved(value) { |
|
|
|
|
self.preferenceSidebarViewOnLoad = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('pdfBugEnabled').then(function resolved(value) { |
|
|
|
|
self.preferencePdfBugEnabled = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('showPreviousViewOnLoad').then(function resolved(value) { |
|
|
|
|
self.preferenceShowPreviousViewOnLoad = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('defaultZoomValue').then(function resolved(value) { |
|
|
|
|
self.preferenceDefaultZoomValue = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('enhanceTextSelection').then(function resolved(value) { |
|
|
|
|
// TODO: Move the initialization and fetching of `Preferences` to occur
|
|
|
|
|
// before the various viewer components are initialized.
|
|
|
|
|
//
|
|
|
|
|
// This was attempted in: https://github.com/mozilla/pdf.js/pull/7586,
|
|
|
|
|
// but it had to be backed out since it violated implicit assumptions
|
|
|
|
|
// about some viewer components being synchronously available.
|
|
|
|
|
//
|
|
|
|
|
// NOTE: This hack works since the `enhanceTextSelection` option is not
|
|
|
|
|
// needed until `PDFViewer.setDocument` has been called.
|
|
|
|
|
self.pdfViewer.enhanceTextSelection = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disableTextLayer').then(function resolved(value) { |
|
|
|
|
if (PDFJS.disableTextLayer === true) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
PDFJS.disableTextLayer = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disableRange').then(function resolved(value) { |
|
|
|
|
if (PDFJS.disableRange === true) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
PDFJS.disableRange = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disableStream').then(function resolved(value) { |
|
|
|
|
if (PDFJS.disableStream === true) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
PDFJS.disableStream = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disableAutoFetch').then(function resolved(value) { |
|
|
|
|
PDFJS.disableAutoFetch = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disableFontFace').then(function resolved(value) { |
|
|
|
|
if (PDFJS.disableFontFace === true) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
PDFJS.disableFontFace = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('useOnlyCssZoom').then(function resolved(value) { |
|
|
|
|
PDFJS.useOnlyCssZoom = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('externalLinkTarget').then(function resolved(value) { |
|
|
|
|
if (PDFJS.isExternalLinkTargetSet()) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
PDFJS.externalLinkTarget = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('renderer').then(function resolved(value) { |
|
|
|
|
// TODO: Like the `enhanceTextSelection` preference, move the
|
|
|
|
|
// initialization and fetching of `Preferences` to occur
|
|
|
|
|
// before the various viewer components are initialized.
|
|
|
|
|
self.pdfViewer.renderer = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('renderInteractiveForms').then(function resolved(value) { |
|
|
|
|
// TODO: Like the `enhanceTextSelection` preference, move the
|
|
|
|
|
// initialization and fetching of `Preferences` to occur
|
|
|
|
|
// before the various viewer components are initialized.
|
|
|
|
|
self.pdfViewer.renderInteractiveForms = value; |
|
|
|
|
}), |
|
|
|
|
Preferences.get('disablePageLabels').then(function resolved(value) { |
|
|
|
|
self.preferenceDisablePageLabels = value; |
|
|
|
|
}), |
|
|
|
|
// TODO move more preferences and other async stuff here
|
|
|
|
|
]).catch(function (reason) { }); |
|
|
|
|
|
|
|
|
|
return initializedPromise.then(function () { |
|
|
|
|
if (self.isViewerEmbedded && !PDFJS.isExternalLinkTargetSet()) { |
|
|
|
|
// Prevent external links from "replacing" the viewer,
|
|
|
|
|
// when it's embedded in e.g. an iframe or an object.
|
|
|
|
|
PDFJS.externalLinkTarget = PDFJS.LinkTarget.TOP; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
self.initialized = true; |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
run: function pdfViewRun(config) { |
|
|
|
|