/* 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. */ import { RenderingStates, ScrollMode, SpreadMode } from "./ui_utils.js"; import { AppOptions } from "./app_options.js"; import { LinkTarget } from "./pdf_link_service.js"; import { PDFViewerApplication } from "./app.js"; /* eslint-disable-next-line no-unused-vars */ const pdfjsVersion = typeof PDFJSDev !== "undefined" ? PDFJSDev.eval("BUNDLE_VERSION") : void 0; /* eslint-disable-next-line no-unused-vars */ const pdfjsBuild = typeof PDFJSDev !== "undefined" ? PDFJSDev.eval("BUNDLE_BUILD") : void 0; const AppConstants = typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC") ? { LinkTarget, RenderingStates, ScrollMode, SpreadMode } : null; window.PDFViewerApplication = PDFViewerApplication; window.PDFViewerApplicationConstants = AppConstants; window.PDFViewerApplicationOptions = AppOptions; function getViewerConfiguration() { return { appContainer: document.body, principalContainer: document.getElementById("mainContainer"), mainContainer: document.getElementById("viewerContainer"), viewerContainer: document.getElementById("viewer"), toolbar: { container: document.getElementById("toolbarContainer"), numPages: document.getElementById("numPages"), pageNumber: document.getElementById("pageNumber"), scaleSelect: document.getElementById("scaleSelect"), customScaleOption: document.getElementById("customScaleOption"), previous: document.getElementById("previous"), next: document.getElementById("next"), zoomIn: document.getElementById("zoomInButton"), zoomOut: document.getElementById("zoomOutButton"), print: document.getElementById("printButton"), editorFreeTextButton: document.getElementById("editorFreeTextButton"), editorFreeTextParamsToolbar: document.getElementById( "editorFreeTextParamsToolbar" ), editorHighlightButton: document.getElementById("editorHighlightButton"), editorHighlightParamsToolbar: document.getElementById( "editorHighlightParamsToolbar" ), editorHighlightColorPicker: document.getElementById( "editorHighlightColorPicker" ), editorInkButton: document.getElementById("editorInkButton"), editorInkParamsToolbar: document.getElementById("editorInkParamsToolbar"), editorStampButton: document.getElementById("editorStampButton"), editorStampParamsToolbar: document.getElementById( "editorStampParamsToolbar" ), editorSignatureButton: document.getElementById("editorSignatureButton"), editorSignatureParamsToolbar: document.getElementById( "editorSignatureParamsToolbar" ), download: document.getElementById("downloadButton"), }, secondaryToolbar: { toolbar: document.getElementById("secondaryToolbar"), toggleButton: document.getElementById("secondaryToolbarToggleButton"), presentationModeButton: document.getElementById("presentationMode"), openFileButton: typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC") ? document.getElementById("secondaryOpenFile") : null, printButton: document.getElementById("secondaryPrint"), downloadButton: document.getElementById("secondaryDownload"), viewBookmarkButton: document.getElementById("viewBookmark"), firstPageButton: document.getElementById("firstPage"), lastPageButton: document.getElementById("lastPage"), pageRotateCwButton: document.getElementById("pageRotateCw"), pageRotateCcwButton: document.getElementById("pageRotateCcw"), cursorSelectToolButton: document.getElementById("cursorSelectTool"), cursorHandToolButton: document.getElementById("cursorHandTool"), scrollPageButton: document.getElementById("scrollPage"), scrollVerticalButton: document.getElementById("scrollVertical"), scrollHorizontalButton: document.getElementById("scrollHorizontal"), scrollWrappedButton: document.getElementById("scrollWrapped"), spreadNoneButton: document.getElementById("spreadNone"), spreadOddButton: document.getElementById("spreadOdd"), spreadEvenButton: document.getElementById("spreadEven"), imageAltTextSettingsButton: document.getElementById( "imageAltTextSettings" ), imageAltTextSettingsSeparator: document.getElementById( "imageAltTextSettingsSeparator" ), documentPropertiesButton: document.getElementById("documentProperties"), }, sidebar: { // Divs (and sidebar button) outerContainer: document.getElementById("outerContainer"), sidebarContainer: document.getElementById("sidebarContainer"), toggleButton: document.getElementById("sidebarToggleButton"), resizer: document.getElementById("sidebarResizer"), // Buttons thumbnailButton: document.getElementById("viewThumbnail"), outlineButton: document.getElementById("viewOutline"), attachmentsButton: document.getElementById("viewAttachments"), layersButton: document.getElementById("viewLayers"), // Views thumbnailView: document.getElementById("thumbnailView"), outlineView: document.getElementById("outlineView"), attachmentsView: document.getElementById("attachmentsView"), layersView: document.getElementById("layersView"), // View-specific options currentOutlineItemButton: document.getElementById("currentOutlineItem"), }, findBar: { bar: document.getElementById("findbar"), toggleButton: document.getElementById("viewFindButton"), findField: document.getElementById("findInput"), highlightAllCheckbox: document.getElementById("findHighlightAll"), caseSensitiveCheckbox: document.getElementById("findMatchCase"), matchDiacriticsCheckbox: document.getElementById("findMatchDiacritics"), entireWordCheckbox: document.getElementById("findEntireWord"), findMsg: document.getElementById("findMsg"), findResultsCount: document.getElementById("findResultsCount"), findPreviousButton: document.getElementById("findPreviousButton"), findNextButton: document.getElementById("findNextButton"), }, passwordOverlay: { dialog: document.getElementById("passwordDialog"), label: document.getElementById("passwordText"), input: document.getElementById("password"), submitButton: document.getElementById("passwordSubmit"), cancelButton: document.getElementById("passwordCancel"), }, documentProperties: { dialog: document.getElementById("documentPropertiesDialog"), 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"), }, }, altTextDialog: { dialog: document.getElementById("altTextDialog"), optionDescription: document.getElementById("descriptionButton"), optionDecorative: document.getElementById("decorativeButton"), textarea: document.getElementById("descriptionTextarea"), cancelButton: document.getElementById("altTextCancel"), saveButton: document.getElementById("altTextSave"), }, newAltTextDialog: { dialog: document.getElementById("newAltTextDialog"), title: document.getElementById("newAltTextTitle"), descriptionContainer: document.getElementById( "newAltTextDescriptionContainer" ), textarea: document.getElementById("newAltTextDescriptionTextarea"), disclaimer: document.getElementById("newAltTextDisclaimer"), learnMore: document.getElementById("newAltTextLearnMore"), imagePreview: document.getElementById("newAltTextImagePreview"), createAutomatically: document.getElementById( "newAltTextCreateAutomatically" ), createAutomaticallyButton: document.getElementById( "newAltTextCreateAutomaticallyButton" ), downloadModel: document.getElementById("newAltTextDownloadModel"), downloadModelDescription: document.getElementById( "newAltTextDownloadModelDescription" ), error: document.getElementById("newAltTextError"), errorCloseButton: document.getElementById("newAltTextCloseButton"), cancelButton: document.getElementById("newAltTextCancel"), notNowButton: document.getElementById("newAltTextNotNow"), saveButton: document.getElementById("newAltTextSave"), }, altTextSettingsDialog: { dialog: document.getElementById("altTextSettingsDialog"), createModelButton: document.getElementById("createModelButton"), aiModelSettings: document.getElementById("aiModelSettings"), learnMore: document.getElementById("altTextSettingsLearnMore"), deleteModelButton: document.getElementById("deleteModelButton"), downloadModelButton: document.getElementById("downloadModelButton"), showAltTextDialogButton: document.getElementById( "showAltTextDialogButton" ), altTextSettingsCloseButton: document.getElementById( "altTextSettingsCloseButton" ), closeButton: document.getElementById("altTextSettingsCloseButton"), }, addSignatureDialog: { dialog: document.getElementById("addSignatureDialog"), panels: document.getElementById("addSignatureActionContainer"), typeButton: document.getElementById("addSignatureTypeButton"), typeInput: document.getElementById("addSignatureTypeInput"), drawButton: document.getElementById("addSignatureDrawButton"), drawSVG: document.getElementById("addSignatureDraw"), drawPlaceholder: document.getElementById("addSignatureDrawPlaceholder"), drawThickness: document.getElementById("addSignatureDrawThickness"), imageButton: document.getElementById("addSignatureImageButton"), imageSVG: document.getElementById("addSignatureImage"), imagePlaceholder: document.getElementById("addSignatureImagePlaceholder"), imagePicker: document.getElementById("addSignatureFilePicker"), imagePickerLink: document.getElementById("addSignatureImageBrowse"), description: document.getElementById("addSignatureDescription"), clearDescription: document.getElementById( "addSignatureDescriptionClearButton" ), clearButton: document.getElementById("clearSignatureButton"), saveContainer: document.getElementById("addSignatureSaveContainer"), saveCheckbox: document.getElementById("addSignatureSaveCheckbox"), errorBar: document.getElementById("addSignatureError"), errorCloseButton: document.getElementById("addSignatureErrorCloseButton"), cancelButton: document.getElementById("addSignatureCancelButton"), addButton: document.getElementById("addSignatureAddButton"), }, annotationEditorParams: { editorFreeTextFontSize: document.getElementById("editorFreeTextFontSize"), editorFreeTextColor: document.getElementById("editorFreeTextColor"), editorInkColor: document.getElementById("editorInkColor"), editorInkThickness: document.getElementById("editorInkThickness"), editorInkOpacity: document.getElementById("editorInkOpacity"), editorStampAddImage: document.getElementById("editorStampAddImage"), editorSignatureAddSignature: document.getElementById( "editorSignatureAddSignature" ), editorFreeHighlightThickness: document.getElementById( "editorFreeHighlightThickness" ), editorHighlightShowAll: document.getElementById("editorHighlightShowAll"), }, printContainer: document.getElementById("printContainer"), editorUndoBar: { container: document.getElementById("editorUndoBar"), message: document.getElementById("editorUndoBarMessage"), undoButton: document.getElementById("editorUndoBarUndoButton"), closeButton: document.getElementById("editorUndoBarCloseButton"), }, }; } function webViewerLoad() { const config = getViewerConfiguration(); 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 = new CustomEvent("webviewerloaded", { bubbles: true, cancelable: true, detail: { source: window, }, }); try { // Attempt to dispatch the event at the embedding `document`, // in order to support cases where the viewer is embedded in // a *dynamically* created