123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- /* Copyright 2016 Mozilla Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /* globals chrome */
- 'use strict';
- if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {
- var defaultUrl; // eslint-disable-line no-var
- (function rewriteUrlClosure() {
- // Run this code outside DOMContentLoaded to make sure that the URL
- // is rewritten as soon as possible.
- let queryString = document.location.search.slice(1);
- let m = /(^|&)file=([^&]*)/.exec(queryString);
- defaultUrl = m ? decodeURIComponent(m[2]) : '';
- // Example: chrome-extension://.../http://example.com/file.pdf
- let humanReadableUrl = '/' + defaultUrl + location.hash;
- history.replaceState(history.state, '', humanReadableUrl);
- if (top === window) {
- chrome.runtime.sendMessage('showPageAction');
- }
- })();
- }
- let pdfjsWebApp, pdfjsWebAppOptions;
- if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('PRODUCTION')) {
- pdfjsWebApp = require('./app.js');
- pdfjsWebAppOptions = require('./app_options.js');
- }
- if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('FIREFOX || MOZCENTRAL')) {
- require('./firefoxcom.js');
- require('./firefox_print_service.js');
- }
- if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('GENERIC')) {
- require('./genericcom.js');
- }
- if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {
- require('./chromecom.js');
- }
- if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME || GENERIC')) {
- require('./pdf_print_service.js');
- }
- function getViewerConfiguration() {
- return {
- appContainer: document.body,
- mainContainer: document.getElementById('viewerContainer'),
- viewerContainer: document.getElementById('viewer'),
- eventBus: null, // Using global event bus with (optional) DOM events.
- toolbar: {
- container: document.getElementById('toolbarViewer'),
- numPages: document.getElementById('numPages'),
- pageNumber: document.getElementById('pageNumber'),
- scaleSelectContainer: document.getElementById('scaleSelectContainer'),
- scaleSelect: document.getElementById('scaleSelect'),
- customScaleOption: document.getElementById('customScaleOption'),
- previous: document.getElementById('previous'),
- next: document.getElementById('next'),
- zoomIn: document.getElementById('zoomIn'),
- zoomOut: document.getElementById('zoomOut'),
- viewFind: document.getElementById('viewFind'),
- openFile: document.getElementById('openFile'),
- print: document.getElementById('print'),
- presentationModeButton: document.getElementById('presentationMode'),
- download: document.getElementById('download'),
- viewBookmark: document.getElementById('viewBookmark'),
- },
- secondaryToolbar: {
- toolbar: document.getElementById('secondaryToolbar'),
- toggleButton: document.getElementById('secondaryToolbarToggle'),
- toolbarButtonContainer:
- document.getElementById('secondaryToolbarButtonContainer'),
- presentationModeButton:
- document.getElementById('secondaryPresentationMode'),
- openFileButton: document.getElementById('secondaryOpenFile'),
- printButton: document.getElementById('secondaryPrint'),
- downloadButton: document.getElementById('secondaryDownload'),
- viewBookmarkButton: document.getElementById('secondaryViewBookmark'),
- firstPageButton: document.getElementById('firstPage'),
- lastPageButton: document.getElementById('lastPage'),
- pageRotateCwButton: document.getElementById('pageRotateCw'),
- pageRotateCcwButton: document.getElementById('pageRotateCcw'),
- cursorSelectToolButton: document.getElementById('cursorSelectTool'),
- cursorHandToolButton: document.getElementById('cursorHandTool'),
- scrollVerticalButton: document.getElementById('scrollVertical'),
- scrollHorizontalButton: document.getElementById('scrollHorizontal'),
- scrollWrappedButton: document.getElementById('scrollWrapped'),
- spreadNoneButton: document.getElementById('spreadNone'),
- spreadOddButton: document.getElementById('spreadOdd'),
- spreadEvenButton: document.getElementById('spreadEven'),
- documentPropertiesButton: document.getElementById('documentProperties'),
- },
- fullscreen: {
- contextFirstPage: document.getElementById('contextFirstPage'),
- contextLastPage: document.getElementById('contextLastPage'),
- contextPageRotateCw: document.getElementById('contextPageRotateCw'),
- contextPageRotateCcw: document.getElementById('contextPageRotateCcw'),
- },
- sidebar: {
- // Divs (and sidebar button)
- outerContainer: document.getElementById('outerContainer'),
- viewerContainer: document.getElementById('viewerContainer'),
- toggleButton: document.getElementById('sidebarToggle'),
- // Buttons
- thumbnailButton: document.getElementById('viewThumbnail'),
- outlineButton: document.getElementById('viewOutline'),
- attachmentsButton: document.getElementById('viewAttachments'),
- // Views
- thumbnailView: document.getElementById('thumbnailView'),
- outlineView: document.getElementById('outlineView'),
- attachmentsView: document.getElementById('attachmentsView'),
- },
- sidebarResizer: {
- outerContainer: document.getElementById('outerContainer'),
- resizer: document.getElementById('sidebarResizer'),
- },
- findBar: {
- bar: document.getElementById('findbar'),
- toggleButton: document.getElementById('viewFind'),
- findField: document.getElementById('findInput'),
- highlightAllCheckbox: document.getElementById('findHighlightAll'),
- caseSensitiveCheckbox: document.getElementById('findMatchCase'),
- entireWordCheckbox: document.getElementById('findEntireWord'),
- findMsg: document.getElementById('findMsg'),
- findResultsCount: document.getElementById('findResultsCount'),
- findPreviousButton: document.getElementById('findPrevious'),
- findNextButton: document.getElementById('findNext'),
- },
- passwordOverlay: {
- overlayName: 'passwordOverlay',
- container: document.getElementById('passwordOverlay'),
- label: document.getElementById('passwordText'),
- input: document.getElementById('password'),
- submitButton: document.getElementById('passwordSubmit'),
- cancelButton: document.getElementById('passwordCancel'),
- },
- documentProperties: {
- overlayName: 'documentPropertiesOverlay',
- container: document.getElementById('documentPropertiesOverlay'),
- closeButton: document.getElementById('documentPropertiesClose'),
- fields: {
- 'fileName': document.getElementById('fileNameField'),
- 'fileSize': document.getElementById('fileSizeField'),
- 'title': document.getElementById('titleField'),
- 'author': document.getElementById('authorField'),
- 'subject': document.getElementById('subjectField'),
- 'keywords': document.getElementById('keywordsField'),
- 'creationDate': document.getElementById('creationDateField'),
- 'modificationDate': document.getElementById('modificationDateField'),
- 'creator': document.getElementById('creatorField'),
- 'producer': document.getElementById('producerField'),
- 'version': document.getElementById('versionField'),
- 'pageCount': document.getElementById('pageCountField'),
- 'pageSize': document.getElementById('pageSizeField'),
- 'linearized': document.getElementById('linearizedField'),
- },
- },
- errorWrapper: {
- container: document.getElementById('errorWrapper'),
- errorMessage: document.getElementById('errorMessage'),
- closeButton: document.getElementById('errorClose'),
- errorMoreInfo: document.getElementById('errorMoreInfo'),
- moreInfoButton: document.getElementById('errorShowMore'),
- lessInfoButton: document.getElementById('errorShowLess'),
- },
- printContainer: document.getElementById('printContainer'),
- openFileInputName: 'fileInput',
- debuggerScriptPath: './debugger.js',
- };
- }
- function webViewerLoad() {
- let config = getViewerConfiguration();
- if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {
- Promise.all([
- SystemJS.import('pdfjs-web/app'),
- SystemJS.import('pdfjs-web/app_options'),
- SystemJS.import('pdfjs-web/genericcom'),
- SystemJS.import('pdfjs-web/pdf_print_service'),
- ]).then(function([app, appOptions, ...otherModules]) {
- window.PDFViewerApplication = app.PDFViewerApplication;
- window.PDFViewerApplicationOptions = appOptions.AppOptions;
- app.PDFViewerApplication.run(config);
- });
- } else {
- if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {
- pdfjsWebAppOptions.AppOptions.set('defaultUrl', defaultUrl);
- }
- window.PDFViewerApplication = pdfjsWebApp.PDFViewerApplication;
- window.PDFViewerApplicationOptions = pdfjsWebAppOptions.AppOptions;
- if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('GENERIC')) {
- // Give custom implementations of the default viewer a simpler way to
- // set various `AppOptions`, by dispatching an event once all viewer
- // files are loaded but *before* the viewer initialization has run.
- const event = document.createEvent('CustomEvent');
- event.initCustomEvent('webviewerloaded', true, true, {});
- document.dispatchEvent(event);
- }
- pdfjsWebApp.PDFViewerApplication.run(config);
- }
- }
- if (document.readyState === 'interactive' ||
- document.readyState === 'complete') {
- webViewerLoad();
- } else {
- document.addEventListener('DOMContentLoaded', webViewerLoad, true);
- }
|