Merge pull request #13525 from Snuffleupagus/api-conditional-Factory
[api-minor] Re-factor the `disableFontFace` fallback value, and skip initializing factories with `useWorkerFetch` set
This commit is contained in:
commit
2a65455c71
@ -54,7 +54,6 @@ import {
|
||||
NodeStandardFontDataFactory,
|
||||
} from "./node_utils.js";
|
||||
import { AnnotationStorage } from "./annotation_storage.js";
|
||||
import { apiCompatibilityParams } from "./api_compatibility.js";
|
||||
import { CanvasGraphics } from "./canvas.js";
|
||||
import { GlobalWorkerOptions } from "./worker_options.js";
|
||||
import { isNodeJS } from "../shared/is_node.js";
|
||||
@ -164,7 +163,7 @@ function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
|
||||
* @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the
|
||||
* worker-thread when reading CMap and standard font files. When `true`,
|
||||
* the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.
|
||||
* The default value is `true` in web wenvironments and `false` in Node.js.
|
||||
* The default value is `true` in web environments and `false` in Node.js.
|
||||
* @property {boolean} [stopAtErrors] - Reject certain promises, e.g.
|
||||
* `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated
|
||||
* PDF data cannot be successfully parsed, instead of attempting to recover
|
||||
@ -176,9 +175,10 @@ function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
|
||||
* as JavaScript. Primarily used to improve performance of font rendering, and
|
||||
* when parsing PDF functions. The default value is `true`.
|
||||
* @property {boolean} [disableFontFace] - By default fonts are converted to
|
||||
* OpenType fonts and loaded via `@font-face` rules. If disabled, fonts will
|
||||
* be rendered using a built-in font renderer that constructs the glyphs with
|
||||
* primitive path commands. The default value is `false`.
|
||||
* OpenType fonts and loaded via the Font Loading API or `@font-face` rules.
|
||||
* If disabled, fonts will be rendered using a built-in font renderer that
|
||||
* constructs the glyphs with primitive path commands.
|
||||
* The default value is `false` in web environments and `true` in Node.js.
|
||||
* @property {boolean} [fontExtraProperties] - Include additional properties,
|
||||
* which are unused during rendering of PDF documents, when exporting the
|
||||
* parsed font data from the worker-thread. This may be useful for debugging
|
||||
@ -329,7 +329,10 @@ function getDocument(src) {
|
||||
params.maxImageSize = -1;
|
||||
}
|
||||
if (typeof params.useSystemFonts !== "boolean") {
|
||||
params.useSystemFonts = !isNodeJS;
|
||||
params.useSystemFonts = !(
|
||||
(typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) &&
|
||||
isNodeJS
|
||||
);
|
||||
}
|
||||
if (typeof params.useWorkerFetch !== "boolean") {
|
||||
params.useWorkerFetch =
|
||||
@ -340,7 +343,8 @@ function getDocument(src) {
|
||||
params.isEvalSupported = true;
|
||||
}
|
||||
if (typeof params.disableFontFace !== "boolean") {
|
||||
params.disableFontFace = apiCompatibilityParams.disableFontFace || false;
|
||||
params.disableFontFace =
|
||||
(typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) && isNodeJS;
|
||||
}
|
||||
if (typeof params.ownerDocument === "undefined") {
|
||||
params.ownerDocument = globalThis.document;
|
||||
@ -988,8 +992,7 @@ class PDFDocumentProxy {
|
||||
|
||||
/**
|
||||
* @type {DocumentInitParameters} A subset of the current
|
||||
* {DocumentInitParameters}, which are either needed in the viewer and/or
|
||||
* whose default values may be affected by the `apiCompatibilityParams`.
|
||||
* {DocumentInitParameters}, which are needed in the viewer.
|
||||
*/
|
||||
get loadingParams() {
|
||||
return this._transport.loadingParams;
|
||||
@ -2277,13 +2280,16 @@ class WorkerTransport {
|
||||
styleElement: params.styleElement,
|
||||
});
|
||||
this._params = params;
|
||||
this.CMapReaderFactory = new params.CMapReaderFactory({
|
||||
baseUrl: params.cMapUrl,
|
||||
isCompressed: params.cMapPacked,
|
||||
});
|
||||
this.StandardFontDataFactory = new params.StandardFontDataFactory({
|
||||
baseUrl: params.standardFontDataUrl,
|
||||
});
|
||||
|
||||
if (!params.useWorkerFetch) {
|
||||
this.CMapReaderFactory = new params.CMapReaderFactory({
|
||||
baseUrl: params.cMapUrl,
|
||||
isCompressed: params.cMapPacked,
|
||||
});
|
||||
this.StandardFontDataFactory = new params.StandardFontDataFactory({
|
||||
baseUrl: params.standardFontDataUrl,
|
||||
});
|
||||
}
|
||||
|
||||
this.destroyed = false;
|
||||
this.destroyCapability = null;
|
||||
@ -2684,14 +2690,28 @@ class WorkerTransport {
|
||||
|
||||
messageHandler.on("FetchBuiltInCMap", data => {
|
||||
if (this.destroyed) {
|
||||
return Promise.reject(new Error("Worker was destroyed"));
|
||||
return Promise.reject(new Error("Worker was destroyed."));
|
||||
}
|
||||
if (!this.CMapReaderFactory) {
|
||||
return Promise.reject(
|
||||
new Error(
|
||||
"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter."
|
||||
)
|
||||
);
|
||||
}
|
||||
return this.CMapReaderFactory.fetch(data);
|
||||
});
|
||||
|
||||
messageHandler.on("FetchStandardFontData", data => {
|
||||
if (this.destroyed) {
|
||||
return Promise.reject(new Error("Worker was destroyed"));
|
||||
return Promise.reject(new Error("Worker was destroyed."));
|
||||
}
|
||||
if (!this.StandardFontDataFactory) {
|
||||
return Promise.reject(
|
||||
new Error(
|
||||
"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter."
|
||||
)
|
||||
);
|
||||
}
|
||||
return this.StandardFontDataFactory.fetch(data);
|
||||
});
|
||||
@ -2911,7 +2931,6 @@ class WorkerTransport {
|
||||
const params = this._params;
|
||||
return shadow(this, "loadingParams", {
|
||||
disableAutoFetch: params.disableAutoFetch,
|
||||
disableFontFace: params.disableFontFace,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1,30 +0,0 @@
|
||||
/* Copyright 2018 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 { isNodeJS } from "../shared/is_node.js";
|
||||
|
||||
const compatibilityParams = Object.create(null);
|
||||
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
|
||||
// Support: Node.js
|
||||
(function checkFontFace() {
|
||||
// Node.js is missing native support for `@font-face`.
|
||||
if (isNodeJS) {
|
||||
compatibilityParams.disableFontFace = true;
|
||||
}
|
||||
})();
|
||||
}
|
||||
const apiCompatibilityParams = Object.freeze(compatibilityParams);
|
||||
|
||||
export { apiCompatibilityParams };
|
@ -53,7 +53,6 @@ import {
|
||||
VerbosityLevel,
|
||||
} from "./shared/util.js";
|
||||
import { AnnotationLayer } from "./display/annotation_layer.js";
|
||||
import { apiCompatibilityParams } from "./display/api_compatibility.js";
|
||||
import { GlobalWorkerOptions } from "./display/worker_options.js";
|
||||
import { renderTextLayer } from "./display/text_layer.js";
|
||||
import { SVGGraphics } from "./display/svg.js";
|
||||
@ -162,8 +161,6 @@ export {
|
||||
VerbosityLevel,
|
||||
// From "./display/annotation_layer.js":
|
||||
AnnotationLayer,
|
||||
// From "./display/api_compatibility.js":
|
||||
apiCompatibilityParams,
|
||||
// From "./display/worker_options.js":
|
||||
GlobalWorkerOptions,
|
||||
// From "./display/text_layer.js":
|
||||
|
Loading…
Reference in New Issue
Block a user