123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /**
- * @licstart The following is the entire license notice for the
- * JavaScript code in this page
- *
- * Copyright 2022 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.
- *
- * @licend The above is the entire license notice for the
- * JavaScript code in this page
- */
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.createDefaultAppearance = createDefaultAppearance;
- exports.getPdfColor = getPdfColor;
- exports.parseDefaultAppearance = parseDefaultAppearance;
- var _core_utils = require("./core_utils.js");
- var _util = require("../shared/util.js");
- var _colorspace = require("./colorspace.js");
- var _evaluator = require("./evaluator.js");
- var _primitives = require("./primitives.js");
- var _stream = require("./stream.js");
- class DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor {
- constructor(str) {
- super(new _stream.StringStream(str));
- }
- parse() {
- const operation = {
- fn: 0,
- args: []
- };
- const result = {
- fontSize: 0,
- fontName: "",
- fontColor: new Uint8ClampedArray(3)
- };
- try {
- while (true) {
- operation.args.length = 0;
- if (!this.read(operation)) {
- break;
- }
- if (this.savedStatesDepth !== 0) {
- continue;
- }
- const {
- fn,
- args
- } = operation;
- switch (fn | 0) {
- case _util.OPS.setFont:
- const [fontName, fontSize] = args;
- if (fontName instanceof _primitives.Name) {
- result.fontName = fontName.name;
- }
- if (typeof fontSize === "number" && fontSize > 0) {
- result.fontSize = fontSize;
- }
- break;
- case _util.OPS.setFillRGBColor:
- _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);
- break;
- case _util.OPS.setFillGray:
- _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);
- break;
- case _util.OPS.setFillColorSpace:
- _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);
- break;
- }
- }
- } catch (reason) {
- (0, _util.warn)(`parseDefaultAppearance - ignoring errors: "${reason}".`);
- }
- return result;
- }
- }
- function parseDefaultAppearance(str) {
- return new DefaultAppearanceEvaluator(str).parse();
- }
- function getPdfColor(color, isFill) {
- if (color[0] === color[1] && color[1] === color[2]) {
- const gray = color[0] / 255;
- return `${(0, _core_utils.numberToString)(gray)} ${isFill ? "g" : "G"}`;
- }
- return Array.from(color, c => (0, _core_utils.numberToString)(c / 255)).join(" ") + ` ${isFill ? "rg" : "RG"}`;
- }
- function createDefaultAppearance({
- fontSize,
- fontName,
- fontColor
- }) {
- return `/${(0, _core_utils.escapePDFName)(fontName)} ${fontSize} Tf ${getPdfColor(fontColor, true)}`;
- }
|