diff --git a/web/default_factory.js b/web/default_factory.js deleted file mode 100644 index 5b1b6a318..000000000 --- a/web/default_factory.js +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright 2014 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. - */ - -/** @typedef {import("../src/display/api").PDFPageProxy} PDFPageProxy */ -// eslint-disable-next-line max-len -/** @typedef {import("../src/display/display_utils").PageViewport} PageViewport */ -/** @typedef {import("./event_utils").EventBus} EventBus */ -/** @typedef {import("./interfaces").IDownloadManager} IDownloadManager */ -/** @typedef {import("./interfaces").IL10n} IL10n */ -/** @typedef {import("./interfaces").IPDFLinkService} IPDFLinkService */ -/** @typedef {import("./interfaces").IPDFXfaLayerFactory} IPDFXfaLayerFactory */ - -import { SimpleLinkService } from "./pdf_link_service.js"; -import { XfaLayerBuilder } from "./xfa_layer_builder.js"; - -/** - * @implements IPDFXfaLayerFactory - */ -class DefaultXfaLayerFactory { - /** - * @typedef {Object} CreateXfaLayerBuilderParameters - * @property {HTMLDivElement} pageDiv - * @property {PDFPageProxy} pdfPage - * @property {AnnotationStorage} [annotationStorage] - Storage for annotation - * data in forms. - */ - - /** - * @param {CreateXfaLayerBuilderParameters} - * @returns {XfaLayerBuilder} - */ - createXfaLayerBuilder({ pageDiv, pdfPage, annotationStorage = null }) { - return new XfaLayerBuilder({ - pageDiv, - pdfPage, - annotationStorage, - linkService: new SimpleLinkService(), - }); - } -} - -export { DefaultXfaLayerFactory }; diff --git a/web/interfaces.js b/web/interfaces.js index 806fe5efb..0b6294cb0 100644 --- a/web/interfaces.js +++ b/web/interfaces.js @@ -18,7 +18,6 @@ // eslint-disable-next-line max-len /** @typedef {import("../src/display/display_utils").PageViewport} PageViewport */ /** @typedef {import("./ui_utils").RenderingStates} RenderingStates */ -/** @typedef {import("./xfa_layer_builder").XfaLayerBuilder} XfaLayerBuilder */ /** * @interface @@ -150,25 +149,6 @@ class IRenderableView { draw() {} } -/** - * @interface - */ -class IPDFXfaLayerFactory { - /** - * @typedef {Object} CreateXfaLayerBuilderParameters - * @property {HTMLDivElement} pageDiv - * @property {PDFPageProxy} pdfPage - * @property {AnnotationStorage} [annotationStorage] - Storage for annotation - * data in forms. - */ - - /** - * @param {CreateXfaLayerBuilderParameters} - * @returns {XfaLayerBuilder} - */ - createXfaLayerBuilder({ pageDiv, pdfPage, annotationStorage = null }) {} -} - /** * @interface */ @@ -235,10 +215,4 @@ class IL10n { async translate(element) {} } -export { - IDownloadManager, - IL10n, - IPDFLinkService, - IPDFXfaLayerFactory, - IRenderableView, -}; +export { IDownloadManager, IL10n, IPDFLinkService, IRenderableView }; diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 7b12be219..0cff72159 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -19,7 +19,6 @@ /** @typedef {import("../src/display/optional_content_config").OptionalContentConfig} OptionalContentConfig */ /** @typedef {import("./event_utils").EventBus} EventBus */ /** @typedef {import("./interfaces").IL10n} IL10n */ -/** @typedef {import("./interfaces").IPDFXfaLayerFactory} IPDFXfaLayerFactory */ /** @typedef {import("./interfaces").IRenderableView} IRenderableView */ // eslint-disable-next-line max-len /** @typedef {import("./pdf_rendering_queue").PDFRenderingQueue} PDFRenderingQueue */ @@ -53,6 +52,7 @@ import { StructTreeLayerBuilder } from "./struct_tree_layer_builder.js"; import { TextAccessibilityManager } from "./text_accessibility.js"; import { TextHighlighter } from "./text_highlighter.js"; import { TextLayerBuilder } from "./text_layer_builder.js"; +import { XfaLayerBuilder } from "./xfa_layer_builder.js"; /** * @typedef {Object} PDFPageViewOptions @@ -73,7 +73,6 @@ import { TextLayerBuilder } from "./text_layer_builder.js"; * being rendered. The constants from {@link AnnotationMode} should be used; * see also {@link RenderParameters} and {@link GetOperatorListParameters}. * The default value is `AnnotationMode.ENABLE_FORMS`. - * @property {IPDFXfaLayerFactory} [xfaLayerFactory] * @property {string} [imageResourcesPath] - Path for image resources, mainly * for annotation icons. Include trailing slash. * @property {boolean} [useOnlyCssZoom] - Enables CSS only zooming. The default @@ -154,7 +153,6 @@ class PDFPageView { this.eventBus = options.eventBus; this.renderingQueue = options.renderingQueue; - this.xfaLayerFactory = options.xfaLayerFactory; if ( typeof PDFJSDev === "undefined" || PDFJSDev.test("!PRODUCTION || GENERIC") @@ -902,11 +900,17 @@ class PDFPageView { } ); - if (pdfPage.isPureXfa && this.xfaLayerFactory) { - this.xfaLayer ||= this.xfaLayerFactory.createXfaLayerBuilder({ - pageDiv: div, - pdfPage, - }); + if (pdfPage.isPureXfa) { + if (!this.xfaLayer) { + const { annotationStorage, linkService } = this.#layerProperties(); + + this.xfaLayer = new XfaLayerBuilder({ + pageDiv: div, + pdfPage, + annotationStorage, + linkService, + }); + } this.#renderXfaLayer(); } diff --git a/web/pdf_viewer.component.js b/web/pdf_viewer.component.js index 3a369ea56..eeb9272d5 100644 --- a/web/pdf_viewer.component.js +++ b/web/pdf_viewer.component.js @@ -26,7 +26,6 @@ import { SpreadMode, } from "./ui_utils.js"; import { AnnotationLayerBuilder } from "./annotation_layer_builder.js"; -import { DefaultXfaLayerFactory } from "./default_factory.js"; import { DownloadManager } from "./download_manager.js"; import { EventBus } from "./event_utils.js"; import { GenericL10n } from "./genericl10n.js"; @@ -75,6 +74,16 @@ class DefaultTextLayerFactory { } } +class DefaultXfaLayerFactory { + constructor() { + throw new Error( + "The `DefaultXfaLayerFactory` has been removed, " + + "please use the `enableXfa` option when calling " + + "the `getDocument`-function to control XfaLayer rendering." + ); + } +} + export { AnnotationLayerBuilder, DefaultAnnotationLayerFactory, diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 256936881..4de3dd382 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -23,7 +23,6 @@ /** @typedef {import("./interfaces").IDownloadManager} IDownloadManager */ /** @typedef {import("./interfaces").IL10n} IL10n */ /** @typedef {import("./interfaces").IPDFLinkService} IPDFLinkService */ -/** @typedef {import("./interfaces").IPDFXfaLayerFactory} IPDFXfaLayerFactory */ import { AnnotationEditorType, @@ -63,7 +62,6 @@ import { NullL10n } from "./l10n_utils.js"; import { PDFPageView } from "./pdf_page_view.js"; import { PDFRenderingQueue } from "./pdf_rendering_queue.js"; import { SimpleLinkService } from "./pdf_link_service.js"; -import { XfaLayerBuilder } from "./xfa_layer_builder.js"; const DEFAULT_CACHE_SIZE = 10; const ENABLE_PERMISSIONS_CLASS = "enablePermissions"; @@ -196,8 +194,6 @@ class PDFPageViewBuffer { /** * Simple viewer control to display PDF content/pages. - * - * @implements {IPDFXfaLayerFactory} */ class PDFViewer { #buffer = null; @@ -780,7 +776,6 @@ class PDFViewer { renderingQueue: this.renderingQueue, textLayerMode, annotationMode, - xfaLayerFactory: this, imageResourcesPath: this.imageResourcesPath, renderer: typeof PDFJSDev === "undefined" || @@ -1654,31 +1649,6 @@ class PDFViewer { return false; } - /** - * @typedef {Object} CreateXfaLayerBuilderParameters - * @property {HTMLDivElement} pageDiv - * @property {PDFPageProxy} pdfPage - * @property {AnnotationStorage} [annotationStorage] - Storage for annotation - * data in forms. - */ - - /** - * @param {CreateXfaLayerBuilderParameters} - * @returns {XfaLayerBuilder} - */ - createXfaLayerBuilder({ - pageDiv, - pdfPage, - annotationStorage = this.pdfDocument?.annotationStorage, - }) { - return new XfaLayerBuilder({ - pageDiv, - pdfPage, - annotationStorage, - linkService: this.linkService, - }); - } - /** * @type {boolean} Whether all pages of the PDF document have identical * widths and heights.