From eb94d71b712e9ce39741df13c7561709d4e31896 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 18 Jun 2021 11:48:29 +0200 Subject: [PATCH] Move the `getXfaHtmlForPrinting` helper function to its own file (PR 13411 follow-up) The `web/ui_utils.js` file should be usable from basically anywhere in the `web/`-folder, hence it should ideally not have any dependecies on its own and particularily *not* onces that pull in entire (large) factories. --- web/firefox_print_service.js | 2 +- web/pdf_print_service.js | 2 +- web/print_utils.js | 42 ++++++++++++++++++++++++++++++++++++ web/ui_utils.js | 26 ---------------------- 4 files changed, 44 insertions(+), 28 deletions(-) create mode 100644 web/print_utils.js diff --git a/web/firefox_print_service.js b/web/firefox_print_service.js index d4b1e16cd..5fb6dba4e 100644 --- a/web/firefox_print_service.js +++ b/web/firefox_print_service.js @@ -14,7 +14,7 @@ */ import { RenderingCancelledException, shadow } from "pdfjs-lib"; -import { getXfaHtmlForPrinting } from "./ui_utils.js"; +import { getXfaHtmlForPrinting } from "./print_utils.js"; import { PDFPrintServiceFactory } from "./app.js"; // Creates a placeholder with div and canvas with right size for the page. diff --git a/web/pdf_print_service.js b/web/pdf_print_service.js index a74ca3374..592607fb3 100644 --- a/web/pdf_print_service.js +++ b/web/pdf_print_service.js @@ -14,7 +14,7 @@ */ import { PDFPrintServiceFactory, PDFViewerApplication } from "./app.js"; -import { getXfaHtmlForPrinting } from "./ui_utils.js"; +import { getXfaHtmlForPrinting } from "./print_utils.js"; import { viewerCompatibilityParams } from "./viewer_compatibility.js"; let activeService = null; diff --git a/web/print_utils.js b/web/print_utils.js new file mode 100644 index 000000000..50725fa99 --- /dev/null +++ b/web/print_utils.js @@ -0,0 +1,42 @@ +/* Copyright 2021 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 { CSS_UNITS } from "./ui_utils.js"; +import { DefaultXfaLayerFactory } from "./xfa_layer_builder.js"; + +function getXfaHtmlForPrinting(printContainer, pdfDocument) { + const xfaHtml = pdfDocument.allXfaHtml; + const factory = new DefaultXfaLayerFactory(); + const scale = Math.round(CSS_UNITS * 100) / 100; + for (const xfaPage of xfaHtml.children) { + const page = document.createElement("div"); + page.className = "xfaPrintedPage"; + printContainer.appendChild(page); + + const { width, height } = xfaPage.attributes.style; + const viewBox = [0, 0, parseInt(width), parseInt(height)]; + const viewport = { viewBox, scale, rotation: 0 }; + + const builder = factory.createXfaLayerBuilder( + /* pageDiv = */ page, + /* pdfPage = */ null, + /* annotationStorage = */ pdfDocument.annotationStorage, + /* xfaHtml = */ xfaPage + ); + builder.render(viewport, "print"); + } +} + +export { getXfaHtmlForPrinting }; diff --git a/web/ui_utils.js b/web/ui_utils.js index e93511211..672c56f69 100644 --- a/web/ui_utils.js +++ b/web/ui_utils.js @@ -13,8 +13,6 @@ * limitations under the License. */ -import { DefaultXfaLayerFactory } from "./xfa_layer_builder.js"; - const CSS_UNITS = 96.0 / 72.0; const DEFAULT_SCALE_VALUE = "auto"; const DEFAULT_SCALE = 1.0; @@ -995,29 +993,6 @@ function apiPageModeToSidebarView(mode) { return SidebarView.NONE; // Default value. } -function getXfaHtmlForPrinting(printContainer, pdfDocument) { - const xfaHtml = pdfDocument.allXfaHtml; - const factory = new DefaultXfaLayerFactory(); - const scale = Math.round(CSS_UNITS * 100) / 100; - for (const xfaPage of xfaHtml.children) { - const page = document.createElement("div"); - page.className = "xfaPrintedPage"; - printContainer.appendChild(page); - - const { width, height } = xfaPage.attributes.style; - const viewBox = [0, 0, parseInt(width), parseInt(height)]; - const viewport = { viewBox, scale, rotation: 0 }; - - const builder = factory.createXfaLayerBuilder( - page, - null, - pdfDocument.annotationStorage, - xfaPage - ); - builder.render(viewport, "print"); - } -} - export { animationStarted, apiPageLayoutToSpreadMode, @@ -1034,7 +1009,6 @@ export { getOutputScale, getPageSizeInches, getVisibleElements, - getXfaHtmlForPrinting, isPortraitOrientation, isValidRotation, isValidScrollMode,