diff options
Diffstat (limited to 'js/pdfjs/build/pdf.worker.js')
-rw-r--r-- | js/pdfjs/build/pdf.worker.js | 1437 |
1 files changed, 1020 insertions, 417 deletions
diff --git a/js/pdfjs/build/pdf.worker.js b/js/pdfjs/build/pdf.worker.js index 5c31a84..ec4b7cf 100644 --- a/js/pdfjs/build/pdf.worker.js +++ b/js/pdfjs/build/pdf.worker.js @@ -1,6 +1,6 @@ /** * @licstart The following is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page * * Copyright 2022 Mozilla Foundation * @@ -17,7 +17,7 @@ * limitations under the License. * * @licend The above is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page */ (function webpackUniversalModuleDefinition(root, factory) { @@ -29,7 +29,7 @@ exports["pdfjs-dist/build/pdf.worker"] = factory(); else root["pdfjs-dist/build/pdf.worker"] = root.pdfjsWorker = factory(); -})(this, function() { +})(this, () => { return /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ([ @@ -50,15 +50,15 @@ var _primitives = __w_pdfjs_require__(5); var _pdf_manager = __w_pdfjs_require__(6); -var _cleanup_helper = __w_pdfjs_require__(66); +var _cleanup_helper = __w_pdfjs_require__(67); -var _writer = __w_pdfjs_require__(72); +var _writer = __w_pdfjs_require__(73); var _is_node = __w_pdfjs_require__(4); -var _message_handler = __w_pdfjs_require__(100); +var _message_handler = __w_pdfjs_require__(102); -var _worker_stream = __w_pdfjs_require__(101); +var _worker_stream = __w_pdfjs_require__(103); var _core_utils = __w_pdfjs_require__(8); @@ -100,7 +100,7 @@ class WorkerMessageHandler { } testMessageProcessed = true; - handler.send("test", data instanceof Uint8Array && data[0] === 255); + handler.send("test", data instanceof Uint8Array); }); handler.on("configure", function wphConfigure(data) { (0, _util.setVerbosityLevel)(data.verbosity); @@ -117,7 +117,7 @@ class WorkerMessageHandler { const WorkerTasks = []; const verbosity = (0, _util.getVerbosityLevel)(); const apiVersion = docParams.apiVersion; - const workerVersion = '2.13.216'; + const workerVersion = '2.14.305'; if (apiVersion !== workerVersion) { throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`); @@ -719,7 +719,7 @@ if (typeof window === "undefined" && !_is_node.isNodeJS && typeof self !== "unde Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; +exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; exports.arrayByteLength = arrayByteLength; exports.arraysToBytes = arraysToBytes; exports.assert = assert; @@ -733,7 +733,6 @@ exports.info = info; exports.isArrayBuffer = isArrayBuffer; exports.isArrayEqual = isArrayEqual; exports.isAscii = isAscii; -exports.isSameOrigin = isSameOrigin; exports.objectFromMap = objectFromMap; exports.objectSize = objectSize; exports.setVerbosityLevel = setVerbosityLevel; @@ -1123,23 +1122,6 @@ function assert(cond, msg) { } } -function isSameOrigin(baseUrl, otherUrl) { - let base; - - try { - base = new URL(baseUrl); - - if (!base.origin || base.origin === "null") { - return false; - } - } catch (e) { - return false; - } - - const other = new URL(otherUrl, base); - return base.origin === other.origin; -} - function _isValidProtocol(url) { if (!url) { return false; @@ -1393,14 +1375,6 @@ function isLittleEndian() { return view32[0] === 1; } -const IsLittleEndianCached = { - get value() { - return shadow(this, "value", isLittleEndian()); - } - -}; -exports.IsLittleEndianCached = IsLittleEndianCached; - function isEvalSupported() { try { new Function(""); @@ -1410,13 +1384,22 @@ function isEvalSupported() { } } -const IsEvalSupportedCached = { - get value() { - return shadow(this, "value", isEvalSupported()); +class FeatureTest { + static get isLittleEndian() { + return shadow(this, "isLittleEndian", isLittleEndian()); } -}; -exports.IsEvalSupportedCached = IsEvalSupportedCached; + static get isEvalSupported() { + return shadow(this, "isEvalSupported", isEvalSupported()); + } + + static get isOffscreenCanvasSupported() { + return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined"); + } + +} + +exports.FeatureTest = FeatureTest; const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); class Util { @@ -1424,6 +1407,60 @@ class Util { return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; } + static scaleMinMax(transform, minMax) { + let temp; + + if (transform[0]) { + if (transform[0] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[0]; + minMax[1] *= transform[0]; + + if (transform[3] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[3]; + minMax[3] *= transform[3]; + } else { + temp = minMax[0]; + minMax[0] = minMax[2]; + minMax[2] = temp; + temp = minMax[1]; + minMax[1] = minMax[3]; + minMax[3] = temp; + + if (transform[1] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[1]; + minMax[3] *= transform[1]; + + if (transform[2] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[2]; + minMax[1] *= transform[2]; + } + + minMax[0] += transform[4]; + minMax[1] += transform[4]; + minMax[2] += transform[5]; + minMax[3] += transform[5]; + } + static transform(m1, m2) { return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; } @@ -1488,31 +1525,21 @@ class Util { } static intersect(rect1, rect2) { - function compare(a, b) { - return a - b; - } + const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2])); + const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2])); - const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare); - const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare); - const result = []; - rect1 = Util.normalizeRect(rect1); - rect2 = Util.normalizeRect(rect2); - - if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) { - result[0] = orderedX[1]; - result[2] = orderedX[2]; - } else { + if (xLow > xHigh) { return null; } - if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) { - result[1] = orderedY[1]; - result[3] = orderedY[2]; - } else { + const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3])); + const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3])); + + if (yLow > yHigh) { return null; } - return result; + return [xLow, yLow, xHigh, yHigh]; } static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) { @@ -2027,10 +2054,8 @@ class RefSet { this._set.delete(ref.toString()); } - forEach(callback) { - for (const ref of this._set.values()) { - callback(ref); - } + [Symbol.iterator]() { + return this._set.values(); } clear() { @@ -2066,10 +2091,8 @@ class RefSetCache { this._map.set(ref.toString(), this.get(aliasRef)); } - forEach(callback) { - for (const value of this._map.values()) { - callback(value); - } + [Symbol.iterator]() { + return this._map.values(); } clear() { @@ -2155,7 +2178,8 @@ class BasePdfManager { } get docBaseUrl() { - return this._docBaseUrl; + const catalog = this.pdfDocument.catalog; + return (0, _util.shadow)(this, "docBaseUrl", catalog.baseUrl || this._docBaseUrl); } onLoadedStream() { @@ -2488,7 +2512,7 @@ class ChunkedStream extends _stream.Stream { return this.bytes[this.pos++]; } - getBytes(length, forceClamped = false) { + getBytes(length) { const bytes = this.bytes; const pos = this.pos; const strEnd = this.end; @@ -2498,8 +2522,7 @@ class ChunkedStream extends _stream.Stream { this.ensureRange(pos, strEnd); } - const subarray = bytes.subarray(pos, strEnd); - return forceClamped ? new Uint8ClampedArray(subarray) : subarray; + return bytes.subarray(pos, strEnd); } let end = pos + length; @@ -2513,8 +2536,7 @@ class ChunkedStream extends _stream.Stream { } this.pos = end; - const subarray = bytes.subarray(pos, end); - return forceClamped ? new Uint8ClampedArray(subarray) : subarray; + return bytes.subarray(pos, end); } getByteRange(begin, end) { @@ -3426,7 +3448,7 @@ class BaseStream { (0, _util.unreachable)("Abstract method `getByte` called"); } - getBytes(length, forceClamped = false) { + getBytes(length) { (0, _util.unreachable)("Abstract method `getBytes` called"); } @@ -3440,8 +3462,8 @@ class BaseStream { return peekedByte; } - peekBytes(length, forceClamped = false) { - const bytes = this.getBytes(length, forceClamped); + peekBytes(length) { + const bytes = this.getBytes(length); this.pos -= bytes.length; return bytes; } @@ -3470,7 +3492,7 @@ class BaseStream { } getString(length) { - return (0, _util.bytesToString)(this.getBytes(length, false)); + return (0, _util.bytesToString)(this.getBytes(length)); } skip(n) { @@ -3538,14 +3560,13 @@ class Stream extends _base_stream.BaseStream { return this.bytes[this.pos++]; } - getBytes(length, forceClamped = false) { + getBytes(length) { const bytes = this.bytes; const pos = this.pos; const strEnd = this.end; if (!length) { - const subarray = bytes.subarray(pos, strEnd); - return forceClamped ? new Uint8ClampedArray(subarray) : subarray; + return bytes.subarray(pos, strEnd); } let end = pos + length; @@ -3555,8 +3576,7 @@ class Stream extends _base_stream.BaseStream { } this.pos = end; - const subarray = bytes.subarray(pos, end); - return forceClamped ? new Uint8ClampedArray(subarray) : subarray; + return bytes.subarray(pos, end); } getByteRange(begin, end) { @@ -3624,21 +3644,23 @@ var _primitives = __w_pdfjs_require__(5); var _xfa_fonts = __w_pdfjs_require__(12); -var _stream = __w_pdfjs_require__(10); - var _annotation = __w_pdfjs_require__(22); var _base_stream = __w_pdfjs_require__(9); -var _crypto = __w_pdfjs_require__(73); +var _crypto = __w_pdfjs_require__(74); -var _catalog = __w_pdfjs_require__(64); +var _catalog = __w_pdfjs_require__(65); -var _cleanup_helper = __w_pdfjs_require__(66); +var _cleanup_helper = __w_pdfjs_require__(67); + +var _dataset_reader = __w_pdfjs_require__(100); var _parser = __w_pdfjs_require__(27); -var _object_loader = __w_pdfjs_require__(71); +var _stream = __w_pdfjs_require__(10); + +var _object_loader = __w_pdfjs_require__(72); var _operator_list = __w_pdfjs_require__(62); @@ -3646,11 +3668,11 @@ var _evaluator = __w_pdfjs_require__(25); var _decode_stream = __w_pdfjs_require__(29); -var _struct_tree = __w_pdfjs_require__(70); +var _struct_tree = __w_pdfjs_require__(71); -var _factory = __w_pdfjs_require__(75); +var _factory = __w_pdfjs_require__(76); -var _xref = __w_pdfjs_require__(99); +var _xref = __w_pdfjs_require__(101); const DEFAULT_USER_UNIT = 1.0; const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; @@ -4112,17 +4134,7 @@ function find(stream, signature, limit = 1024, backwards = false) { } class PDFDocument { - constructor(pdfManager, arg) { - let stream; - - if (arg instanceof _base_stream.BaseStream) { - stream = arg; - } else if ((0, _util.isArrayBuffer)(arg)) { - stream = new _stream.Stream(arg); - } else { - throw new Error("PDFDocument: Unknown argument type"); - } - + constructor(pdfManager, stream) { if (stream.length <= 0) { throw new _util.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes."); } @@ -4309,7 +4321,7 @@ class PDFDocument { }); } - get xfaData() { + get _xfaStreams() { const acroForm = this.catalog.acroForm; if (!acroForm) { @@ -4329,13 +4341,8 @@ class PDFDocument { }; if (xfa instanceof _base_stream.BaseStream && !xfa.isEmpty) { - try { - entries["xdp:xdp"] = (0, _util.stringToUTF8String)(xfa.getString()); - return entries; - } catch (_) { - (0, _util.warn)("XFA - Invalid utf-8 string."); - return null; - } + entries["xdp:xdp"] = xfa; + return entries; } if (!Array.isArray(xfa) || xfa.length === 0) { @@ -4363,15 +4370,64 @@ class PDFDocument { continue; } + entries[name] = data; + } + + return entries; + } + + get xfaDatasets() { + const streams = this._xfaStreams; + + if (!streams) { + return (0, _util.shadow)(this, "xfaDatasets", null); + } + + for (const key of ["datasets", "xdp:xdp"]) { + const stream = streams[key]; + + if (!stream) { + continue; + } + + try { + const str = (0, _util.stringToUTF8String)(stream.getString()); + const data = { + [key]: str + }; + return (0, _util.shadow)(this, "xfaDatasets", new _dataset_reader.DatasetReader(data)); + } catch (_) { + (0, _util.warn)("XFA - Invalid utf-8 string."); + break; + } + } + + return (0, _util.shadow)(this, "xfaDatasets", null); + } + + get xfaData() { + const streams = this._xfaStreams; + + if (!streams) { + return null; + } + + const data = Object.create(null); + + for (const [key, stream] of Object.entries(streams)) { + if (!stream) { + continue; + } + try { - entries[name] = (0, _util.stringToUTF8String)(data.getString()); + data[key] = (0, _util.stringToUTF8String)(stream.getString()); } catch (_) { (0, _util.warn)("XFA - Invalid utf-8 string."); return null; } } - return entries; + return data; } get xfaFactory() { @@ -18147,28 +18203,30 @@ var _base_stream = __w_pdfjs_require__(9); var _bidi = __w_pdfjs_require__(60); -var _catalog = __w_pdfjs_require__(64); +var _catalog = __w_pdfjs_require__(65); var _colorspace = __w_pdfjs_require__(24); -var _file_spec = __w_pdfjs_require__(67); +var _file_spec = __w_pdfjs_require__(68); -var _object_loader = __w_pdfjs_require__(71); +var _object_loader = __w_pdfjs_require__(72); var _operator_list = __w_pdfjs_require__(62); var _stream = __w_pdfjs_require__(10); -var _writer = __w_pdfjs_require__(72); +var _writer = __w_pdfjs_require__(73); + +var _factory = __w_pdfjs_require__(76); -var _factory = __w_pdfjs_require__(75); +const LINE_FACTOR = 1.35; class AnnotationFactory { static create(xref, ref, pdfManager, idFactory, collectFields) { - return Promise.all([pdfManager.ensureCatalog("acroForm"), collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1]).then(([acroForm, pageIndex]) => pdfManager.ensure(this, "_create", [xref, ref, pdfManager, idFactory, acroForm, collectFields, pageIndex])); + return Promise.all([pdfManager.ensureCatalog("acroForm"), pdfManager.ensureCatalog("baseUrl"), pdfManager.ensureDoc("xfaDatasets"), collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1]).then(([acroForm, baseUrl, xfaDatasets, pageIndex]) => pdfManager.ensure(this, "_create", [xref, ref, pdfManager, idFactory, acroForm, xfaDatasets, collectFields, pageIndex])); } - static _create(xref, ref, pdfManager, idFactory, acroForm, collectFields, pageIndex = -1) { + static _create(xref, ref, pdfManager, idFactory, acroForm, xfaDatasets, collectFields, pageIndex = -1) { const dict = xref.fetchIfRef(ref); if (!(dict instanceof _primitives.Dict)) { @@ -18186,6 +18244,7 @@ class AnnotationFactory { id, pdfManager, acroForm: acroForm instanceof _primitives.Dict ? acroForm : _primitives.Dict.empty, + xfaDatasets, collectFields, pageIndex }; @@ -18552,6 +18611,37 @@ class Annotation { this.color = getRgbColor(color); } + setLineEndings(lineEndings) { + this.lineEndings = ["None", "None"]; + + if (Array.isArray(lineEndings) && lineEndings.length === 2) { + for (let i = 0; i < 2; i++) { + const obj = lineEndings[i]; + + if (obj instanceof _primitives.Name) { + switch (obj.name) { + case "None": + continue; + + case "Square": + case "Circle": + case "Diamond": + case "OpenArrow": + case "ClosedArrow": + case "Butt": + case "ROpenArrow": + case "RClosedArrow": + case "Slash": + this.lineEndings[i] = obj.name; + continue; + } + } + + (0, _util.warn)(`Ignoring invalid lineEnding: ${obj}`); + } + } + } + setBorderAndBackgroundColors(mk) { if (mk instanceof _primitives.Dict) { this.borderColor = getRgbColor(mk.getArray("BC"), null); @@ -19022,7 +19112,7 @@ class WidgetAnnotation extends Annotation { data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType); } - const fieldValue = (0, _core_utils.getInheritableProperty)({ + let fieldValue = (0, _core_utils.getInheritableProperty)({ dict, key: "V", getArray: true @@ -19035,6 +19125,15 @@ class WidgetAnnotation extends Annotation { }); data.defaultFieldValue = this._decodeFormValue(defaultFieldValue); + if (fieldValue === undefined && params.xfaDatasets) { + const path = this._title.str; + + if (path) { + this._hasValueFromXFA = true; + data.fieldValue = fieldValue = params.xfaDatasets.getValue(path); + } + } + if (fieldValue === undefined && data.defaultFieldValue !== null) { data.fieldValue = data.defaultFieldValue; } @@ -19134,14 +19233,18 @@ class WidgetAnnotation extends Annotation { } async save(evaluator, task, annotationStorage) { - if (!annotationStorage) { - return null; - } - - const storageEntry = annotationStorage.get(this.data.id); - const value = storageEntry && storageEntry.value; + const storageEntry = annotationStorage ? annotationStorage.get(this.data.id) : undefined; + let value = storageEntry && storageEntry.value; if (value === this.data.fieldValue || value === undefined) { + if (!this._hasValueFromXFA) { + return null; + } + + value = value || this.data.fieldValue; + } + + if (!this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && value.length === this.data.fieldValue.length && value.every((x, i) => x === this.data.fieldValue[i])) { return null; } @@ -19178,7 +19281,9 @@ class WidgetAnnotation extends Annotation { appearance = newTransform.encryptString(appearance); } - dict.set("V", (0, _util.isAscii)(value) ? value : (0, _util.stringToUTF16BEString)(value)); + const encoder = val => (0, _util.isAscii)(val) ? val : (0, _util.stringToUTF16BEString)(val); + + dict.set("V", Array.isArray(value) ? value.map(encoder) : encoder(value)); dict.set("AP", AP); dict.set("M", `D:${(0, _util.getModificationDate)()}`); const appearanceDict = new _primitives.Dict(xref); @@ -19206,17 +19311,26 @@ class WidgetAnnotation extends Annotation { async _getAppearance(evaluator, task, annotationStorage) { const isPassword = this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD); - if (!annotationStorage || isPassword) { + if (isPassword) { return null; } - const storageEntry = annotationStorage.get(this.data.id); - let value = storageEntry && storageEntry.value; + const storageEntry = annotationStorage ? annotationStorage.get(this.data.id) : undefined; + let value = storageEntry && (storageEntry.formattedValue || storageEntry.value); if (value === undefined) { - return null; + if (!this._hasValueFromXFA || this.appearance) { + return null; + } + + value = this.data.fieldValue; + + if (!value) { + return ""; + } } + (0, _util.assert)(typeof value === "string", "Expected `value` to be a string."); value = value.trim(); if (value === "") { @@ -19300,8 +19414,6 @@ class WidgetAnnotation extends Annotation { if (!fontSize) { const roundWithTwoDigits = x => Math.floor(x * 100) / 100; - const LINE_FACTOR = 1.35; - if (lineCount === -1) { const textWidth = this._getTextWidth(text, font); @@ -19370,12 +19482,13 @@ class WidgetAnnotation extends Annotation { } _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) { - const width = this._getTextWidth(text, font) * fontSize; let shift; if (alignment === 1) { + const width = this._getTextWidth(text, font) * fontSize; shift = (totalWidth - width) / 2; } else if (alignment === 2) { + const width = this._getTextWidth(text, font) * fontSize; shift = totalWidth - width - hPadding; } else { shift = hPadding; @@ -19563,7 +19676,7 @@ class TextWidgetAnnotation extends WidgetAnnotation { return { id: this.data.id, value: this.data.fieldValue, - defaultValue: this.data.defaultFieldValue, + defaultValue: this.data.defaultFieldValue || "", multiline: this.data.multiLine, password: this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD), charLimit: this.data.maxLen, @@ -20048,6 +20161,115 @@ class ChoiceWidgetAnnotation extends WidgetAnnotation { }; } + async _getAppearance(evaluator, task, annotationStorage) { + if (this.data.combo) { + return super._getAppearance(evaluator, task, annotationStorage); + } + + if (!annotationStorage) { + return null; + } + + const storageEntry = annotationStorage.get(this.data.id); + let exportedValue = storageEntry && storageEntry.value; + + if (exportedValue === undefined) { + return null; + } + + if (!Array.isArray(exportedValue)) { + exportedValue = [exportedValue]; + } + + const defaultPadding = 2; + const hPadding = defaultPadding; + const totalHeight = this.data.rect[3] - this.data.rect[1]; + const totalWidth = this.data.rect[2] - this.data.rect[0]; + const lineCount = this.data.options.length; + const valueIndices = []; + + for (let i = 0; i < lineCount; i++) { + const { + exportValue + } = this.data.options[i]; + + if (exportedValue.includes(exportValue)) { + valueIndices.push(i); + } + } + + if (!this._defaultAppearance) { + this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g"); + } + + const font = await this._getFontData(evaluator, task); + let defaultAppearance; + let { + fontSize + } = this.data.defaultAppearanceData; + + if (!fontSize) { + const lineHeight = (totalHeight - defaultPadding) / lineCount; + let lineWidth = -1; + let value; + + for (const { + displayValue + } of this.data.options) { + const width = this._getTextWidth(displayValue); + + if (width > lineWidth) { + lineWidth = width; + value = displayValue; + } + } + + [defaultAppearance, fontSize] = this._computeFontSize(lineHeight, totalWidth - 2 * hPadding, value, font, -1); + } else { + defaultAppearance = this._defaultAppearance; + } + + const lineHeight = fontSize * LINE_FACTOR; + const vPadding = (lineHeight - fontSize) / 2; + const numberOfVisibleLines = Math.floor(totalHeight / lineHeight); + let firstIndex; + + if (valueIndices.length === 1) { + const valuePosition = valueIndices[0]; + const indexInPage = valuePosition % numberOfVisibleLines; + firstIndex = valuePosition - indexInPage; + } else { + firstIndex = valueIndices.length ? valueIndices[0] : 0; + } + + const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount); + const buf = ["/Tx BMC q", `1 1 ${totalWidth} ${totalHeight} re W n`]; + + if (valueIndices.length) { + buf.push("0.600006 0.756866 0.854904 rg"); + + for (const index of valueIndices) { + if (firstIndex <= index && index < end) { + buf.push(`1 ${totalHeight - (index - firstIndex + 1) * lineHeight} ${totalWidth} ${lineHeight} re f`); + } + } + } + + buf.push("BT", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`); + + for (let i = firstIndex; i < end; i++) { + const { + displayValue + } = this.data.options[i]; + const hpadding = i === firstIndex ? hPadding : 0; + const vpadding = i === firstIndex ? vPadding : 0; + buf.push(this._renderText(displayValue, font, fontSize, totalWidth, 0, hpadding, -lineHeight + vpadding)); + } + + buf.push("ET Q EMC"); + return buf.join("\n"); + } + } class SignatureWidgetAnnotation extends WidgetAnnotation { @@ -20186,15 +20408,20 @@ class FreeTextAnnotation extends MarkupAnnotation { class LineAnnotation extends MarkupAnnotation { constructor(parameters) { super(parameters); + const { + dict + } = parameters; this.data.annotationType = _util.AnnotationType.LINE; - const lineCoordinates = parameters.dict.getArray("L"); + const lineCoordinates = dict.getArray("L"); this.data.lineCoordinates = _util.Util.normalizeRect(lineCoordinates); + this.setLineEndings(dict.getArray("LE")); + this.data.lineEndings = this.lineEndings; if (!this.appearance) { const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; - const strokeAlpha = parameters.dict.get("CA"); + const strokeAlpha = dict.get("CA"); let fillColor = null, - interiorColor = parameters.dict.getArray("IC"); + interiorColor = dict.getArray("IC"); if (interiorColor) { interiorColor = getRgbColor(interiorColor, null); @@ -20336,9 +20563,18 @@ class CircleAnnotation extends MarkupAnnotation { class PolylineAnnotation extends MarkupAnnotation { constructor(parameters) { super(parameters); + const { + dict + } = parameters; this.data.annotationType = _util.AnnotationType.POLYLINE; this.data.vertices = []; - const rawVertices = parameters.dict.getArray("Vertices"); + + if (!(this instanceof PolygonAnnotation)) { + this.setLineEndings(dict.getArray("LE")); + this.data.lineEndings = this.lineEndings; + } + + const rawVertices = dict.getArray("Vertices"); if (!Array.isArray(rawVertices)) { return; @@ -20353,7 +20589,7 @@ class PolylineAnnotation extends MarkupAnnotation { if (!this.appearance) { const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; - const strokeAlpha = parameters.dict.get("CA"); + const strokeAlpha = dict.get("CA"); const borderWidth = this.borderStyle.width || 1, borderAdjust = 2 * borderWidth; const bbox = [Infinity, Infinity, -Infinity, -Infinity]; @@ -21969,6 +22205,12 @@ function normalizeBlendMode(value, parsingArray = false) { return "source-over"; } +function incrementCachedImageMaskCount(data) { + if (data.fn === _util.OPS.paintImageMaskXObject && data.args[0] && data.args[0].count > 0) { + data.args[0].count++; + } +} + class TimeSlotManager { static get TIME_SLOT_DURATION_MS() { return (0, _util.shadow)(this, "TIME_SLOT_DURATION_MS", 20); @@ -22150,9 +22392,10 @@ class PartialEvaluator { } } - processed.forEach(ref => { + for (const ref of processed) { nonBlendModesSet.put(ref); - }); + } + return false; } @@ -22317,7 +22560,7 @@ class PartialEvaluator { } _sendImgData(objId, imgData, cacheGlobally = false) { - const transfers = imgData ? [imgData.data.buffer] : null; + const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null; if (this.parsingType3Font || cacheGlobally) { return this.handler.send("commonobj", [objId, "Image", imgData], transfers); @@ -22348,8 +22591,14 @@ class PartialEvaluator { const maxImageSize = this.options.maxImageSize; if (maxImageSize !== -1 && w * h > maxImageSize) { - (0, _util.warn)("Image exceeded maximum allowed size and was removed."); - return; + const msg = "Image exceeded maximum allowed size and was removed."; + + if (this.options.ignoreErrors) { + (0, _util.warn)(msg); + return; + } + + throw new Error(msg); } let optionalContent; @@ -22358,18 +22607,39 @@ class PartialEvaluator { optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources); } - if (optionalContent !== undefined) { - operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); - } - const imageMask = dict.get("IM", "ImageMask") || false; - const interpolate = dict.get("I", "Interpolate"); let imgData, args; if (imageMask) { + const interpolate = dict.get("I", "Interpolate"); const bitStrideLength = w + 7 >> 3; - const imgArray = image.getBytes(bitStrideLength * h, true); + const imgArray = image.getBytes(bitStrideLength * h); const decode = dict.getArray("D", "Decode"); + + if (this.parsingType3Font) { + imgData = _image.PDFImage.createRawMask({ + imgArray, + width: w, + height: h, + imageIsFromDecodeStream: image instanceof _decode_stream.DecodeStream, + inverseDecode: !!decode && decode[0] > 0, + interpolate + }); + imgData.cached = !!cacheKey; + args = [imgData]; + operatorList.addImageOps(_util.OPS.paintImageMaskXObject, args, optionalContent); + + if (cacheKey) { + localImageCache.set(cacheKey, imageRef, { + fn: _util.OPS.paintImageMaskXObject, + args, + optionalContent + }); + } + + return; + } + imgData = _image.PDFImage.createMask({ imgArray, width: w, @@ -22378,21 +22648,43 @@ class PartialEvaluator { inverseDecode: !!decode && decode[0] > 0, interpolate }); - imgData.cached = !!cacheKey; - args = [imgData]; - operatorList.addOp(_util.OPS.paintImageMaskXObject, args); + + if (imgData.isSingleOpaquePixel) { + operatorList.addImageOps(_util.OPS.paintSolidColorImageMask, [], optionalContent); + + if (cacheKey) { + localImageCache.set(cacheKey, imageRef, { + fn: _util.OPS.paintSolidColorImageMask, + args: [], + optionalContent + }); + } + + return; + } + + const objId = `mask_${this.idFactory.createObjId()}`; + operatorList.addDependency(objId); + + this._sendImgData(objId, imgData); + + args = [{ + data: objId, + width: imgData.width, + height: imgData.height, + interpolate: imgData.interpolate, + count: 1 + }]; + operatorList.addImageOps(_util.OPS.paintImageMaskXObject, args, optionalContent); if (cacheKey) { localImageCache.set(cacheKey, imageRef, { fn: _util.OPS.paintImageMaskXObject, - args + args, + optionalContent }); } - if (optionalContent !== undefined) { - operatorList.addOp(_util.OPS.endMarkedContent, []); - } - return; } @@ -22410,12 +22702,7 @@ class PartialEvaluator { localColorSpaceCache }); imgData = imageObj.createImageData(true); - operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]); - - if (optionalContent !== undefined) { - operatorList.addOp(_util.OPS.endMarkedContent, []); - } - + operatorList.addImageOps(_util.OPS.paintInlineImageXObject, [imgData], optionalContent); return; } @@ -22455,12 +22742,13 @@ class PartialEvaluator { return this._sendImgData(objId, null, cacheGlobally); }); - operatorList.addOp(_util.OPS.paintImageXObject, args); + operatorList.addImageOps(_util.OPS.paintImageXObject, args, optionalContent); if (cacheKey) { localImageCache.set(cacheKey, imageRef, { fn: _util.OPS.paintImageXObject, - args + args, + optionalContent }); if (imageRef) { @@ -22472,15 +22760,12 @@ class PartialEvaluator { objId, fn: _util.OPS.paintImageXObject, args, + optionalContent, byteSize: 0 }); } } } - - if (optionalContent !== undefined) { - operatorList.addOp(_util.OPS.endMarkedContent, []); - } } handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) { @@ -22941,13 +23226,16 @@ class PartialEvaluator { args = []; } + let minMax; + if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) { if (parsingText) { (0, _util.warn)(`Encountered path operator "${fn}" inside of a text object.`); operatorList.addOp(_util.OPS.save, null); } - operatorList.addOp(_util.OPS.constructPath, [[fn], args]); + minMax = [Infinity, -Infinity, Infinity, -Infinity]; + operatorList.addOp(_util.OPS.constructPath, [[fn], args, minMax]); if (parsingText) { operatorList.addOp(_util.OPS.restore, null); @@ -22956,6 +23244,24 @@ class PartialEvaluator { const opArgs = operatorList.argsArray[lastIndex]; opArgs[0].push(fn); Array.prototype.push.apply(opArgs[1], args); + minMax = opArgs[2]; + } + + switch (fn) { + case _util.OPS.rectangle: + minMax[0] = Math.min(minMax[0], args[0], args[0] + args[2]); + minMax[1] = Math.max(minMax[1], args[0], args[0] + args[2]); + minMax[2] = Math.min(minMax[2], args[1], args[1] + args[3]); + minMax[3] = Math.max(minMax[3], args[1], args[1] + args[3]); + break; + + case _util.OPS.moveTo: + case _util.OPS.lineTo: + minMax[0] = Math.min(minMax[0], args[0]); + minMax[1] = Math.max(minMax[1], args[0]); + minMax[2] = Math.min(minMax[2], args[1]); + minMax[3] = Math.max(minMax[3], args[1]); + break; } } @@ -23233,7 +23539,8 @@ class PartialEvaluator { const localImage = localImageCache.getByName(name); if (localImage) { - operatorList.addOp(localImage.fn, localImage.args); + operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); + incrementCachedImageMaskCount(localImage); args = null; continue; } @@ -23250,7 +23557,8 @@ class PartialEvaluator { const localImage = localImageCache.getByRef(xobj); if (localImage) { - operatorList.addOp(localImage.fn, localImage.args); + operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); + incrementCachedImageMaskCount(localImage); resolveXObject(); return; } @@ -23259,7 +23567,7 @@ class PartialEvaluator { if (globalImage) { operatorList.addDependency(globalImage.objId); - operatorList.addOp(globalImage.fn, globalImage.args); + operatorList.addImageOps(globalImage.fn, globalImage.args, globalImage.optionalContent); resolveXObject(); return; } @@ -23341,7 +23649,8 @@ class PartialEvaluator { const localImage = localImageCache.getByName(cacheKey); if (localImage) { - operatorList.addOp(localImage.fn, localImage.args); + operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); + incrementCachedImageMaskCount(localImage); args = null; continue; } @@ -23740,11 +24049,29 @@ class PartialEvaluator { spaceInFlowMax: 0, trackingSpaceMin: Infinity, negativeSpaceMax: -Infinity, + notASpace: -Infinity, transform: null, fontName: null, hasEOL: false }; + const twoLastChars = [" ", " "]; + let twoLastCharsPos = 0; + + function saveLastChar(char) { + const nextPos = (twoLastCharsPos + 1) % 2; + const ret = twoLastChars[twoLastCharsPos] !== " " && twoLastChars[nextPos] === " "; + twoLastChars[twoLastCharsPos] = char; + twoLastCharsPos = nextPos; + return ret; + } + + function resetLastChars() { + twoLastChars[0] = twoLastChars[1] = " "; + twoLastCharsPos = 0; + } + const TRACKING_SPACE_FACTOR = 0.1; + const NOT_A_SPACE_FACTOR = 0.03; const NEGATIVE_SPACE_FACTOR = -0.2; const SPACE_IN_FLOW_MIN_FACTOR = 0.1; const SPACE_IN_FLOW_MAX_FACTOR = 0.6; @@ -23807,6 +24134,7 @@ class PartialEvaluator { const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]); textContentItem.textAdvanceScale = scaleCtmX * scaleLineX; textContentItem.trackingSpaceMin = textState.fontSize * TRACKING_SPACE_FACTOR; + textContentItem.notASpace = textState.fontSize * NOT_A_SPACE_FACTOR; textContentItem.negativeSpaceMax = textState.fontSize * NEGATIVE_SPACE_FACTOR; textContentItem.spaceInFlowMin = textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR; textContentItem.spaceInFlowMax = textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR; @@ -23937,6 +24265,7 @@ class PartialEvaluator { return true; } + resetLastChars(); flushTextContentItem(); return true; } @@ -23946,10 +24275,15 @@ class PartialEvaluator { return true; } + if (advanceY <= textOrientation * textContentItem.notASpace) { + resetLastChars(); + } + if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) { textContentItem.height += advanceY; } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) { if (textContentItem.str.length === 0) { + resetLastChars(); textContent.items.push({ str: " ", dir: "ltr", @@ -23977,6 +24311,7 @@ class PartialEvaluator { return true; } + resetLastChars(); flushTextContentItem(); return true; } @@ -23986,10 +24321,15 @@ class PartialEvaluator { return true; } + if (advanceX <= textOrientation * textContentItem.notASpace) { + resetLastChars(); + } + if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) { textContentItem.width += advanceX; } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) { if (textContentItem.str.length === 0) { + resetLastChars(); textContent.items.push({ str: " ", dir: "ltr", @@ -24046,7 +24386,7 @@ class PartialEvaluator { let scaledDim = glyphWidth * scale; - if (glyph.isWhitespace && (i === 0 || i + 1 === ii || glyphs[i - 1].isWhitespace || glyphs[i + 1].isWhitespace || extraSpacing)) { + if (glyph.isWhitespace) { if (!font.vertical) { charSpacing += scaledDim + textState.wordSpacing; textState.translateTextMatrix(charSpacing * textState.textHScale, 0); @@ -24055,6 +24395,7 @@ class PartialEvaluator { textState.translateTextMatrix(0, -charSpacing); } + saveLastChar(" "); continue; } @@ -24082,15 +24423,16 @@ class PartialEvaluator { textChunk.prevTransform = getCurrentTextTransform(); } - if (glyph.isWhitespace) { + let glyphUnicode = glyph.unicode; + glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode; + glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode); + + if (saveLastChar(glyphUnicode)) { textChunk.str.push(" "); - } else { - let glyphUnicode = glyph.unicode; - glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode; - glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode); - textChunk.str.push(glyphUnicode); } + textChunk.str.push(glyphUnicode); + if (charSpacing) { if (!font.vertical) { textState.translateTextMatrix(charSpacing * textState.textHScale, 0); @@ -24102,6 +24444,8 @@ class PartialEvaluator { } function appendEOL() { + resetLastChars(); + if (textContentItem.initialized) { textContentItem.hasEOL = true; flushTextContentItem(); @@ -24121,6 +24465,7 @@ class PartialEvaluator { function addFakeSpaces(width, transf, textOrientation) { if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) { if (textContentItem.initialized) { + resetLastChars(); textContentItem.str.push(" "); } @@ -24136,6 +24481,7 @@ class PartialEvaluator { } flushTextContentItem(); + resetLastChars(); textContent.items.push({ str: " ", dir: "ltr", @@ -24636,7 +24982,13 @@ class PartialEvaluator { } else if (encoding instanceof _primitives.Name) { baseEncodingName = encoding.name; } else { - throw new _util.FormatError("Encoding is not a Name nor a Dict"); + const msg = "Encoding is not a Name nor a Dict"; + + if (!this.options.ignoreErrors) { + throw new _util.FormatError(msg); + } + + (0, _util.warn)(msg); } if (baseEncodingName !== "MacRomanEncoding" && baseEncodingName !== "MacExpertEncoding" && baseEncodingName !== "WinAnsiEncoding") { @@ -28738,7 +29090,7 @@ class DecodeStream extends _base_stream.BaseStream { return this.buffer[this.pos++]; } - getBytes(length, forceClamped = false) { + getBytes(length) { const pos = this.pos; let end; @@ -28764,8 +29116,7 @@ class DecodeStream extends _base_stream.BaseStream { } this.pos = end; - const subarray = this.buffer.subarray(pos, end); - return forceClamped && !(subarray instanceof Uint8ClampedArray) ? new Uint8ClampedArray(subarray) : subarray; + return this.buffer.subarray(pos, end); } reset() { @@ -31533,9 +31884,7 @@ class SimpleSegmentVisitor { const buffer = new Uint8ClampedArray(rowSize * info.height); if (info.defaultPixelValue) { - for (let i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] = 0xff; - } + buffer.fill(0xff); } this.buffer = buffer; @@ -38055,12 +38404,13 @@ class Font { } const format = file.getUint16(); - file.skip(2 + 2); let hasShortCmap = false; const mappings = []; let j, glyphId; if (format === 0) { + file.skip(2 + 2); + for (j = 0; j < 256; j++) { const index = file.getByte(); @@ -38076,6 +38426,7 @@ class Font { hasShortCmap = true; } else if (format === 2) { + file.skip(2 + 2); const subHeaderKeys = []; let maxSubHeaderKey = 0; @@ -38124,6 +38475,7 @@ class Font { } } } else if (format === 4) { + file.skip(2 + 2); const segCount = file.getUint16() >> 1; file.skip(6); const segments = []; @@ -38189,6 +38541,7 @@ class Font { } } } else if (format === 6) { + file.skip(2 + 2); const firstCode = file.getUint16(); const entryCount = file.getUint16(); @@ -38200,6 +38553,22 @@ class Font { glyphId }); } + } else if (format === 12) { + file.skip(2 + 4 + 4); + const nGroups = file.getInt32() >>> 0; + + for (j = 0; j < nGroups; j++) { + const startCharCode = file.getInt32() >>> 0; + const endCharCode = file.getInt32() >>> 0; + let glyphCode = file.getInt32() >>> 0; + + for (let charCode = startCharCode; charCode <= endCharCode; charCode++) { + mappings.push({ + charCode, + glyphId: glyphCode++ + }); + } + } } else { (0, _util.warn)("cmap table has unsupported format: " + format); return { @@ -38488,6 +38857,27 @@ class Font { locaEntries.sort((a, b) => { return a.index - b.index; }); + + for (i = 0; i < numGlyphs; i++) { + const { + offset, + endOffset + } = locaEntries[i]; + + if (offset !== 0 || endOffset !== 0) { + break; + } + + const nextOffset = locaEntries[i + 1].offset; + + if (nextOffset === 0) { + continue; + } + + locaEntries[i].endOffset = nextOffset; + break; + } + const missingGlyphs = Object.create(null); let writeOffset = 0; itemEncode(locaData, 0, writeOffset); @@ -49988,7 +50378,7 @@ class PDFFunction { const parser = new _ps_parser.PostScriptParser(lexer); const code = parser.parse(); - if (isEvalSupported && _util.IsEvalSupportedCached.value) { + if (isEvalSupported && _util.FeatureTest.isEvalSupported) { const compiled = new PostScriptCompiler().compile(code, domain, range); if (compiled) { @@ -51309,9 +51699,9 @@ class GlobalImageCache { get _byteSize() { let byteSize = 0; - this._imageCache.forEach(imageData => { + for (const imageData of this._imageCache) { byteSize += imageData.byteSize; - }); + } return byteSize; } @@ -51884,25 +52274,6 @@ function addState(parentState, pattern, checkFn, iterateFn, processFn) { }; } -function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) { - const iFirstPIMXO = iFirstSave + 2; - let i; - - for (i = 0; i < count; i++) { - const arg = argsArray[iFirstPIMXO + 4 * i]; - const imageMask = arg.length === 1 && arg[0]; - - if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) { - fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask; - continue; - } - - break; - } - - return count - i; -} - const InitialState = []; addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) { const fnArray = context.fnArray; @@ -51971,7 +52342,7 @@ addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInli const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING; const imgHeight = currentY + maxLineHeight + IMAGE_PADDING; - const imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4); + const imgData = new Uint8Array(imgWidth * imgHeight * 4); const imgRowSize = imgWidth << 2; for (let q = 0; q < count; q++) { @@ -52042,7 +52413,6 @@ addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImag const iFirstTransform = curr - 2; const iFirstPIMXO = curr - 1; let count = Math.floor((i - iFirstSave) / 4); - count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray); if (count < MIN_IMAGES_IN_MASKS_BLOCK) { return i - (i - iFirstSave) % 4; @@ -52100,6 +52470,8 @@ addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImag data: maskParams.data, width: maskParams.width, height: maskParams.height, + interpolate: maskParams.interpolate, + count: maskParams.count, transform: transformArgs }); } @@ -52423,6 +52795,18 @@ class OperatorList { } } + addImageOps(fn, args, optionalContent) { + if (optionalContent !== undefined) { + this.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + + this.addOp(fn, args); + + if (optionalContent !== undefined) { + this.addOp(_util.OPS.endMarkedContent, []); + } + } + addDependency(dependency) { if (this.dependencies.has(dependency)) { return; @@ -52475,9 +52859,8 @@ class OperatorList { case _util.OPS.paintInlineImageXObjectGroup: case _util.OPS.paintImageMaskXObject: const arg = argsArray[i][0]; - ; - if (!arg.cached) { + if (!arg.cached && arg.data && arg.data.buffer instanceof ArrayBuffer) { transfers.push(arg.data.buffer); } @@ -52524,6 +52907,8 @@ exports.PDFImage = void 0; var _util = __w_pdfjs_require__(2); +var _image_utils = __w_pdfjs_require__(64); + var _base_stream = __w_pdfjs_require__(9); var _colorspace = __w_pdfjs_require__(24); @@ -52755,12 +53140,16 @@ class PDFImage { const mask = image.dict.get("Mask"); if (smask) { - smaskData = smask; + if (smask instanceof _base_stream.BaseStream) { + smaskData = smask; + } else { + (0, _util.warn)("Unsupported /SMask format."); + } } else if (mask) { if (mask instanceof _base_stream.BaseStream || Array.isArray(mask)) { maskData = mask; } else { - (0, _util.warn)("Unsupported mask format."); + (0, _util.warn)("Unsupported /Mask format."); } } @@ -52776,7 +53165,7 @@ class PDFImage { }); } - static createMask({ + static createRawMask({ imgArray, width, height, @@ -52792,15 +53181,11 @@ class PDFImage { if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) { data = imgArray; } else if (!inverseDecode) { - data = new Uint8ClampedArray(actualLength); - data.set(imgArray); + data = new Uint8Array(imgArray); } else { - data = new Uint8ClampedArray(computedLength); + data = new Uint8Array(computedLength); data.set(imgArray); - - for (i = actualLength; i < computedLength; i++) { - data[i] = 0xff; - } + data.fill(0xff, actualLength); } if (inverseDecode) { @@ -52817,6 +53202,54 @@ class PDFImage { }; } + static createMask({ + imgArray, + width, + height, + imageIsFromDecodeStream, + inverseDecode, + interpolate + }) { + const isSingleOpaquePixel = width === 1 && height === 1 && inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128)); + + if (isSingleOpaquePixel) { + return { + isSingleOpaquePixel + }; + } + + if (_util.FeatureTest.isOffscreenCanvasSupported) { + const canvas = new OffscreenCanvas(width, height); + const ctx = canvas.getContext("2d"); + const imgData = ctx.createImageData(width, height); + (0, _image_utils.applyMaskImageData)({ + src: imgArray, + dest: imgData.data, + width, + height, + inverseDecode + }); + ctx.putImageData(imgData, 0, 0); + const bitmap = canvas.transferToImageBitmap(); + return { + data: null, + width, + height, + interpolate, + bitmap + }; + } + + return this.createRawMask({ + imgArray, + width, + height, + inverseDecode, + imageIsFromDecodeStream, + interpolate + }); + } + get drawWidth() { return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0); } @@ -53052,7 +53485,6 @@ class PDFImage { const originalHeight = this.height; const bpc = this.bpc; const rowBytes = originalWidth * numComps * bpc + 7 >> 3; - let imgArray; if (!forceRGBA) { let kind; @@ -53065,15 +53497,7 @@ class PDFImage { if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) { imgData.kind = kind; - imgArray = this.getImageBytes(originalHeight * rowBytes); - - if (this.image instanceof _decode_stream.DecodeStream) { - imgData.data = imgArray; - } else { - const newArray = new Uint8ClampedArray(imgArray.length); - newArray.set(imgArray); - imgData.data = newArray; - } + imgData.data = this.getImageBytes(originalHeight * rowBytes, {}); if (this.needsDecode) { (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image must be grayscale."); @@ -53097,13 +53521,19 @@ class PDFImage { case "DeviceRGB": case "DeviceCMYK": imgData.kind = _util.ImageKind.RGB_24BPP; - imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true); + imgData.data = this.getImageBytes(imageLength, { + drawWidth, + drawHeight, + forceRGB: true + }); return imgData; } } } - imgArray = this.getImageBytes(originalHeight * rowBytes); + const imgArray = this.getImageBytes(originalHeight * rowBytes, { + internal: true + }); const actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight; const comps = this.getComponents(imgArray); let alpha01, maybeUndoPreblend; @@ -53145,7 +53575,9 @@ class PDFImage { const height = this.height; const bpc = this.bpc; const rowBytes = width * numComps * bpc + 7 >> 3; - const imgArray = this.getImageBytes(height * rowBytes); + const imgArray = this.getImageBytes(height * rowBytes, { + internal: true + }); const comps = this.getComponents(imgArray); let i, length; @@ -53177,12 +53609,24 @@ class PDFImage { } } - getImageBytes(length, drawWidth, drawHeight, forceRGB = false) { + getImageBytes(length, { + drawWidth, + drawHeight, + forceRGB = false, + internal = false + }) { this.image.reset(); this.image.drawWidth = drawWidth || this.width; this.image.drawHeight = drawHeight || this.height; this.image.forceRGB = !!forceRGB; - return this.image.getBytes(length, true); + const imageBytes = this.image.getBytes(length); + + if (internal || this.image instanceof _decode_stream.DecodeStream) { + return imageBytes; + } + + (0, _util.assert)(imageBytes instanceof Uint8Array, 'PDFImage.getImageBytes: Unsupported "imageBytes" type.'); + return new Uint8Array(imageBytes); } } @@ -53198,6 +53642,65 @@ exports.PDFImage = PDFImage; Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.applyMaskImageData = applyMaskImageData; + +var _util = __w_pdfjs_require__(2); + +function applyMaskImageData({ + src, + srcPos = 0, + dest, + destPos = 0, + width, + height, + inverseDecode = false +}) { + const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); + + for (let i = 0; i < height; i++) { + for (const max = srcPos + widthInSource; srcPos < max; srcPos++) { + const elem = srcPos < srcLength ? src[srcPos] : 255; + dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping; + } + + if (widthRemainder === 0) { + continue; + } + + const elem = srcPos < srcLength ? src[srcPos++] : 255; + + for (let j = 0; j < widthRemainder; j++) { + dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping; + } + } + + return { + srcPos, + destPos + }; +} + +/***/ }), +/* 65 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); exports.Catalog = void 0; var _core_utils = __w_pdfjs_require__(8); @@ -53206,21 +53709,21 @@ var _util = __w_pdfjs_require__(2); var _primitives = __w_pdfjs_require__(5); -var _name_number_tree = __w_pdfjs_require__(65); +var _name_number_tree = __w_pdfjs_require__(66); var _base_stream = __w_pdfjs_require__(9); -var _cleanup_helper = __w_pdfjs_require__(66); +var _cleanup_helper = __w_pdfjs_require__(67); var _colorspace = __w_pdfjs_require__(24); -var _file_spec = __w_pdfjs_require__(67); +var _file_spec = __w_pdfjs_require__(68); var _image_utils = __w_pdfjs_require__(59); -var _metadata_parser = __w_pdfjs_require__(68); +var _metadata_parser = __w_pdfjs_require__(69); -var _struct_tree = __w_pdfjs_require__(70); +var _struct_tree = __w_pdfjs_require__(71); function fetchDestination(dest) { if (dest instanceof _primitives.Dict) { @@ -53374,24 +53877,18 @@ class Catalog { return null; } - const markInfo = Object.assign(Object.create(null), { + const markInfo = { Marked: false, UserProperties: false, Suspects: false - }); + }; for (const key in markInfo) { - if (!obj.has(key)) { - continue; - } - const value = obj.get(key); - if (typeof value !== "boolean") { - continue; + if (typeof value === "boolean") { + markInfo[key] = value; } - - markInfo[key] = value; } return markInfo; @@ -53778,7 +54275,7 @@ class Catalog { const dest = fetchDestination(value); if (dest) { - dests[key] = dest; + dests[(0, _util.stringToPDFString)(key)] = dest; } } } else if (obj instanceof _primitives.Dict) { @@ -53931,13 +54428,7 @@ class Catalog { const baseCharCode = style === "a" ? A_LOWER_CASE : A_UPPER_CASE; const letterIndex = currentIndex - 1; const character = String.fromCharCode(baseCharCode + letterIndex % LIMIT); - const charBuf = []; - - for (let j = 0, jj = letterIndex / LIMIT | 0; j <= jj; j++) { - charBuf.push(character); - } - - currentLabel = charBuf.join(""); + currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1); break; default: @@ -54211,7 +54702,7 @@ class Catalog { xfaImages = new _primitives.Dict(this.xref); } - xfaImages.set(key, value); + xfaImages.set((0, _util.stringToPDFString)(key), value); } } @@ -54251,7 +54742,7 @@ class Catalog { const nameTree = new _name_number_tree.NameTree(obj.getRaw("JavaScript"), this.xref); for (const [key, value] of nameTree.getAll()) { - appendIfJavaScriptDict(key, value); + appendIfJavaScriptDict((0, _util.stringToPDFString)(key), value); } } @@ -54292,42 +54783,34 @@ class Catalog { return (0, _util.shadow)(this, "jsActions", actions); } - fontFallback(id, handler) { - const promises = []; - this.fontCache.forEach(function (promise) { - promises.push(promise); - }); - return Promise.all(promises).then(translatedFonts => { - for (const translatedFont of translatedFonts) { - if (translatedFont.loadedName === id) { - translatedFont.fallback(handler); - return; - } + async fontFallback(id, handler) { + const translatedFonts = await Promise.all(this.fontCache); + + for (const translatedFont of translatedFonts) { + if (translatedFont.loadedName === id) { + translatedFont.fallback(handler); + return; } - }); + } } - cleanup(manuallyTriggered = false) { + async cleanup(manuallyTriggered = false) { (0, _cleanup_helper.clearGlobalCaches)(); this.globalImageCache.clear(manuallyTriggered); this.pageKidsCountCache.clear(); this.pageIndexCache.clear(); this.nonBlendModesSet.clear(); - const promises = []; - this.fontCache.forEach(function (promise) { - promises.push(promise); - }); - return Promise.all(promises).then(translatedFonts => { - for (const { - dict - } of translatedFonts) { - delete dict.cacheKey; - } + const translatedFonts = await Promise.all(this.fontCache); - this.fontCache.clear(); - this.builtInCMapCache.clear(); - this.standardFontDataCache.clear(); - }); + for (const { + dict + } of translatedFonts) { + delete dict.cacheKey; + } + + this.fontCache.clear(); + this.builtInCMapCache.clear(); + this.standardFontDataCache.clear(); } async getPageDict(pageIndex) { @@ -54658,6 +55141,26 @@ class Catalog { return next(pageRef); } + get baseUrl() { + const uri = this._catDict.get("URI"); + + if (uri instanceof _primitives.Dict) { + const base = uri.get("Base"); + + if (typeof base === "string") { + const absoluteUrl = (0, _util.createValidAbsoluteUrl)(base, null, { + tryConvertEncoding: true + }); + + if (absoluteUrl) { + return (0, _util.shadow)(this, "baseUrl", absoluteUrl.href); + } + } + } + + return (0, _util.shadow)(this, "baseUrl", null); + } + static parseDestDictionary(params) { const destDict = params.destDict; @@ -54832,7 +55335,9 @@ class Catalog { dest = dest.name; } - if (typeof dest === "string" || Array.isArray(dest)) { + if (typeof dest === "string") { + resultObj.dest = (0, _util.stringToPDFString)(dest); + } else if (Array.isArray(dest)) { resultObj.dest = dest; } } @@ -54843,7 +55348,7 @@ class Catalog { exports.Catalog = Catalog; /***/ }), -/* 65 */ +/* 66 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -54890,9 +55395,11 @@ class NameOrNumberTree { if (obj.has("Kids")) { const kids = obj.get("Kids"); - for (let i = 0, ii = kids.length; i < ii; i++) { - const kid = kids[i]; + if (!Array.isArray(kids)) { + continue; + } + for (const kid of kids) { if (processed.has(kid)) { throw new _util.FormatError(`Duplicate entry in "${this._type}" tree.`); } @@ -54953,7 +55460,7 @@ class NameOrNumberTree { } else if (key > xref.fetchIfRef(limits[1])) { l = m + 1; } else { - kidsOrEntries = xref.fetchIfRef(kids[m]); + kidsOrEntries = kid; break; } } @@ -55008,7 +55515,7 @@ class NumberTree extends NameOrNumberTree { exports.NumberTree = NumberTree; /***/ }), -/* 66 */ +/* 67 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -55028,7 +55535,7 @@ function clearGlobalCaches() { } /***/ }), -/* 67 */ +/* 68 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -55134,7 +55641,7 @@ class FileSpec { exports.FileSpec = FileSpec; /***/ }), -/* 68 */ +/* 69 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -55144,7 +55651,7 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.MetadataParser = void 0; -var _xml_parser = __w_pdfjs_require__(69); +var _xml_parser = __w_pdfjs_require__(70); class MetadataParser { constructor(data) { @@ -55273,7 +55780,7 @@ class MetadataParser { exports.MetadataParser = MetadataParser; /***/ }), -/* 69 */ +/* 70 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -55627,6 +56134,10 @@ class SimpleDOMNode { }).join(""); } + get children() { + return this.childNodes || []; + } + hasChildNodes() { return this.childNodes && this.childNodes.length > 0; } @@ -55803,12 +56314,14 @@ class SimpleXMLParser extends XMLParserBase { const lastElement = this._currentFragment[this._currentFragment.length - 1]; if (!lastElement) { - return; + return null; } for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) { lastElement.childNodes[i].parentNode = lastElement; } + + return lastElement; } onError(code) { @@ -55820,7 +56333,7 @@ class SimpleXMLParser extends XMLParserBase { exports.SimpleXMLParser = SimpleXMLParser; /***/ }), -/* 70 */ +/* 71 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -55834,7 +56347,7 @@ var _primitives = __w_pdfjs_require__(5); var _util = __w_pdfjs_require__(2); -var _name_number_tree = __w_pdfjs_require__(65); +var _name_number_tree = __w_pdfjs_require__(66); const MAX_DEPTH = 40; const StructElementType = { @@ -56189,7 +56702,7 @@ class StructTreePage { exports.StructTreePage = StructTreePage; /***/ }), -/* 71 */ +/* 72 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -56339,7 +56852,7 @@ class ObjectLoader { exports.ObjectLoader = ObjectLoader; /***/ }), -/* 72 */ +/* 73 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -56356,11 +56869,11 @@ var _primitives = __w_pdfjs_require__(5); var _core_utils = __w_pdfjs_require__(8); -var _xml_parser = __w_pdfjs_require__(69); +var _xml_parser = __w_pdfjs_require__(70); var _base_stream = __w_pdfjs_require__(9); -var _crypto = __w_pdfjs_require__(73); +var _crypto = __w_pdfjs_require__(74); function writeDict(dict, buffer, transform) { buffer.push("<<"); @@ -56509,7 +57022,11 @@ function writeXFADataForAcroform(str, newRefs) { const node = xml.documentElement.searchNode((0, _core_utils.parseXFAPath)(path), 0); if (node) { - node.childNodes = [new _xml_parser.SimpleDOMNode("#text", value)]; + if (Array.isArray(value)) { + node.childNodes = value.map(val => new _xml_parser.SimpleDOMNode("value", val)); + } else { + node.childNodes = [new _xml_parser.SimpleDOMNode("#text", value)]; + } } else { (0, _util.warn)(`Node not found for path: ${path}`); } @@ -56695,7 +57212,7 @@ function incrementalUpdate({ } /***/ }), -/* 73 */ +/* 74 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -56711,7 +57228,7 @@ var _util = __w_pdfjs_require__(2); var _primitives = __w_pdfjs_require__(5); -var _decrypt_stream = __w_pdfjs_require__(74); +var _decrypt_stream = __w_pdfjs_require__(75); class ARCFourCipher { constructor(key) { @@ -58286,7 +58803,7 @@ const CipherTransformFactory = function CipherTransformFactoryClosure() { exports.CipherTransformFactory = CipherTransformFactory; /***/ }), -/* 74 */ +/* 75 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -58345,7 +58862,7 @@ class DecryptStream extends _decode_stream.DecodeStream { exports.DecryptStream = DecryptStream; /***/ }), -/* 75 */ +/* 76 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -58355,21 +58872,21 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.XFAFactory = void 0; -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _bind = __w_pdfjs_require__(80); +var _bind = __w_pdfjs_require__(81); -var _data = __w_pdfjs_require__(86); +var _data = __w_pdfjs_require__(87); -var _fonts = __w_pdfjs_require__(84); +var _fonts = __w_pdfjs_require__(85); -var _utils = __w_pdfjs_require__(77); +var _utils = __w_pdfjs_require__(78); var _util = __w_pdfjs_require__(2); -var _parser = __w_pdfjs_require__(87); +var _parser = __w_pdfjs_require__(88); -var _xhtml = __w_pdfjs_require__(97); +var _xhtml = __w_pdfjs_require__(98); class XFAFactory { constructor(data) { @@ -58541,7 +59058,7 @@ class XFAFactory { exports.XFAFactory = XFAFactory; /***/ }), -/* 76 */ +/* 77 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -58551,15 +59068,15 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.XmlObject = exports.XFAObjectArray = exports.XFAObject = exports.XFAAttribute = exports.StringObject = exports.OptionObject = exports.Option10 = exports.Option01 = exports.IntegerObject = exports.ContentObject = exports.$uid = exports.$toStyle = exports.$toString = exports.$toPages = exports.$toHTML = exports.$text = exports.$tabIndex = exports.$setValue = exports.$setSetAttributes = exports.$setId = exports.$searchNode = exports.$root = exports.$resolvePrototypes = exports.$removeChild = exports.$pushPara = exports.$pushGlyphs = exports.$popPara = exports.$onText = exports.$onChildCheck = exports.$onChild = exports.$nsAttributes = exports.$nodeName = exports.$namespaceId = exports.$isUsable = exports.$isTransparent = exports.$isThereMoreWidth = exports.$isSplittable = exports.$isNsAgnostic = exports.$isDescendent = exports.$isDataValue = exports.$isCDATAXml = exports.$isBindable = exports.$insertAt = exports.$indexOf = exports.$ids = exports.$hasSettableValue = exports.$globalData = exports.$getTemplateRoot = exports.$getSubformParent = exports.$getRealChildrenByNameIt = exports.$getParent = exports.$getNextPage = exports.$getExtra = exports.$getDataValue = exports.$getContainedChildren = exports.$getChildrenByNameIt = exports.$getChildrenByName = exports.$getChildrenByClass = exports.$getChildren = exports.$getAvailableSpace = exports.$getAttributes = exports.$getAttributeIt = exports.$flushHTML = exports.$finalize = exports.$extra = exports.$dump = exports.$data = exports.$content = exports.$consumed = exports.$clone = exports.$cleanup = exports.$cleanPage = exports.$clean = exports.$childrenToHTML = exports.$appendChild = exports.$addHTML = exports.$acceptWhitespace = void 0; -var _utils = __w_pdfjs_require__(77); +var _utils = __w_pdfjs_require__(78); var _util = __w_pdfjs_require__(2); var _core_utils = __w_pdfjs_require__(8); -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); -var _som = __w_pdfjs_require__(79); +var _som = __w_pdfjs_require__(80); const $acceptWhitespace = Symbol(); exports.$acceptWhitespace = $acceptWhitespace; @@ -59739,7 +60256,7 @@ class Option10 extends IntegerObject { exports.Option10 = Option10; /***/ }), -/* 77 */ +/* 78 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -60010,7 +60527,7 @@ class HTMLResult { exports.HTMLResult = HTMLResult; /***/ }), -/* 78 */ +/* 79 */ /***/ ((__unused_webpack_module, exports) => { @@ -60086,7 +60603,7 @@ const NamespaceIds = { exports.NamespaceIds = NamespaceIds; /***/ }), -/* 79 */ +/* 80 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -60097,9 +60614,9 @@ Object.defineProperty(exports, "__esModule", ({ exports.createDataNode = createDataNode; exports.searchNode = searchNode; -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); var _util = __w_pdfjs_require__(2); @@ -60434,7 +60951,7 @@ function createDataNode(root, container, expr) { } /***/ }), -/* 80 */ +/* 81 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -60444,13 +60961,13 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.Binder = void 0; -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _template = __w_pdfjs_require__(81); +var _template = __w_pdfjs_require__(82); -var _som = __w_pdfjs_require__(79); +var _som = __w_pdfjs_require__(80); -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); var _util = __w_pdfjs_require__(2); @@ -61033,7 +61550,7 @@ class Binder { exports.Binder = Binder; /***/ }), -/* 81 */ +/* 82 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -61043,23 +61560,23 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.Value = exports.Text = exports.TemplateNamespace = exports.Template = exports.SetProperty = exports.Items = exports.Field = exports.BindItems = void 0; -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); -var _layout = __w_pdfjs_require__(82); +var _layout = __w_pdfjs_require__(83); -var _html_utils = __w_pdfjs_require__(83); +var _html_utils = __w_pdfjs_require__(84); -var _utils = __w_pdfjs_require__(77); +var _utils = __w_pdfjs_require__(78); var _util = __w_pdfjs_require__(2); -var _fonts = __w_pdfjs_require__(84); +var _fonts = __w_pdfjs_require__(85); var _core_utils = __w_pdfjs_require__(8); -var _som = __w_pdfjs_require__(79); +var _som = __w_pdfjs_require__(80); const TEMPLATE_NS_ID = _namespaces.NamespaceIds.template.id; const SVG_NS = "http://www.w3.org/2000/svg"; @@ -66955,7 +67472,7 @@ class TemplateNamespace { exports.TemplateNamespace = TemplateNamespace; /***/ }), -/* 82 */ +/* 83 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -66968,9 +67485,9 @@ exports.checkDimensions = checkDimensions; exports.flushHTML = flushHTML; exports.getAvailableSpace = getAvailableSpace; -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _html_utils = __w_pdfjs_require__(83); +var _html_utils = __w_pdfjs_require__(84); function createLine(node, children) { return { @@ -67307,7 +67824,7 @@ function checkDimensions(node, space) { } /***/ }), -/* 83 */ +/* 84 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -67330,15 +67847,15 @@ exports.setMinMaxDimensions = setMinMaxDimensions; exports.setPara = setPara; exports.toStyle = toStyle; -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); var _util = __w_pdfjs_require__(2); -var _utils = __w_pdfjs_require__(77); +var _utils = __w_pdfjs_require__(78); -var _fonts = __w_pdfjs_require__(84); +var _fonts = __w_pdfjs_require__(85); -var _text = __w_pdfjs_require__(85); +var _text = __w_pdfjs_require__(86); function measureToString(m) { if (typeof m === "string") { @@ -67991,7 +68508,7 @@ function fixURL(str) { } /***/ }), -/* 84 */ +/* 85 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -68003,9 +68520,9 @@ exports.FontFinder = void 0; exports.getMetrics = getMetrics; exports.selectFont = selectFont; -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _utils = __w_pdfjs_require__(77); +var _utils = __w_pdfjs_require__(78); var _util = __w_pdfjs_require__(2); @@ -68200,7 +68717,7 @@ function getMetrics(xfaFont, real = false) { } /***/ }), -/* 85 */ +/* 86 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -68210,7 +68727,7 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.TextMeasure = void 0; -var _fonts = __w_pdfjs_require__(84); +var _fonts = __w_pdfjs_require__(85); const WIDTH_FACTOR = 1.02; @@ -68468,7 +68985,7 @@ class TextMeasure { exports.TextMeasure = TextMeasure; /***/ }), -/* 86 */ +/* 87 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -68478,7 +68995,7 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.DataHandler = void 0; -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); class DataHandler { constructor(root, data) { @@ -68545,7 +69062,7 @@ class DataHandler { exports.DataHandler = DataHandler; /***/ }), -/* 87 */ +/* 88 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -68555,11 +69072,11 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.XFAParser = void 0; -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _xml_parser = __w_pdfjs_require__(69); +var _xml_parser = __w_pdfjs_require__(70); -var _builder = __w_pdfjs_require__(88); +var _builder = __w_pdfjs_require__(89); var _util = __w_pdfjs_require__(2); @@ -68738,7 +69255,7 @@ class XFAParser extends _xml_parser.XMLParserBase { exports.XFAParser = XFAParser; /***/ }), -/* 88 */ +/* 89 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -68748,15 +69265,15 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.Builder = void 0; -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _setup = __w_pdfjs_require__(89); +var _setup = __w_pdfjs_require__(90); -var _template = __w_pdfjs_require__(81); +var _template = __w_pdfjs_require__(82); -var _unknown = __w_pdfjs_require__(98); +var _unknown = __w_pdfjs_require__(99); var _util = __w_pdfjs_require__(2); @@ -68971,7 +69488,7 @@ class Builder { exports.Builder = Builder; /***/ }), -/* 89 */ +/* 90 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -68981,23 +69498,23 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.NamespaceSetUp = void 0; -var _config = __w_pdfjs_require__(90); +var _config = __w_pdfjs_require__(91); -var _connection_set = __w_pdfjs_require__(91); +var _connection_set = __w_pdfjs_require__(92); -var _datasets = __w_pdfjs_require__(92); +var _datasets = __w_pdfjs_require__(93); -var _locale_set = __w_pdfjs_require__(93); +var _locale_set = __w_pdfjs_require__(94); -var _signature = __w_pdfjs_require__(94); +var _signature = __w_pdfjs_require__(95); -var _stylesheet = __w_pdfjs_require__(95); +var _stylesheet = __w_pdfjs_require__(96); -var _template = __w_pdfjs_require__(81); +var _template = __w_pdfjs_require__(82); -var _xdp = __w_pdfjs_require__(96); +var _xdp = __w_pdfjs_require__(97); -var _xhtml = __w_pdfjs_require__(97); +var _xhtml = __w_pdfjs_require__(98); const NamespaceSetUp = { config: _config.ConfigNamespace, @@ -69013,7 +69530,7 @@ const NamespaceSetUp = { exports.NamespaceSetUp = NamespaceSetUp; /***/ }), -/* 90 */ +/* 91 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -69023,11 +69540,11 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.ConfigNamespace = void 0; -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _utils = __w_pdfjs_require__(77); +var _utils = __w_pdfjs_require__(78); var _util = __w_pdfjs_require__(2); @@ -70902,7 +71419,7 @@ class ConfigNamespace { exports.ConfigNamespace = ConfigNamespace; /***/ }), -/* 91 */ +/* 92 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -70912,9 +71429,9 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.ConnectionSetNamespace = void 0; -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); const CONNECTION_SET_NS_ID = _namespaces.NamespaceIds.connectionSet.id; @@ -71116,7 +71633,7 @@ class ConnectionSetNamespace { exports.ConnectionSetNamespace = ConnectionSetNamespace; /***/ }), -/* 92 */ +/* 93 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -71126,9 +71643,9 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.DatasetsNamespace = void 0; -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); const DATASETS_NS_ID = _namespaces.NamespaceIds.datasets.id; @@ -71184,7 +71701,7 @@ class DatasetsNamespace { exports.DatasetsNamespace = DatasetsNamespace; /***/ }), -/* 93 */ +/* 94 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -71194,11 +71711,11 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.LocaleSetNamespace = void 0; -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _utils = __w_pdfjs_require__(77); +var _utils = __w_pdfjs_require__(78); const LOCALE_SET_NS_ID = _namespaces.NamespaceIds.localeSet.id; @@ -71522,7 +72039,7 @@ class LocaleSetNamespace { exports.LocaleSetNamespace = LocaleSetNamespace; /***/ }), -/* 94 */ +/* 95 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -71532,9 +72049,9 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.SignatureNamespace = void 0; -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); const SIGNATURE_NS_ID = _namespaces.NamespaceIds.signature.id; @@ -71563,7 +72080,7 @@ class SignatureNamespace { exports.SignatureNamespace = SignatureNamespace; /***/ }), -/* 95 */ +/* 96 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -71573,9 +72090,9 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.StylesheetNamespace = void 0; -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); const STYLESHEET_NS_ID = _namespaces.NamespaceIds.stylesheet.id; @@ -71604,7 +72121,7 @@ class StylesheetNamespace { exports.StylesheetNamespace = StylesheetNamespace; /***/ }), -/* 96 */ +/* 97 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -71614,9 +72131,9 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.XdpNamespace = void 0; -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); const XDP_NS_ID = _namespaces.NamespaceIds.xdp.id; @@ -71658,7 +72175,7 @@ class XdpNamespace { exports.XdpNamespace = XdpNamespace; /***/ }), -/* 97 */ +/* 98 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -71668,13 +72185,13 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.XhtmlNamespace = void 0; -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); -var _html_utils = __w_pdfjs_require__(83); +var _html_utils = __w_pdfjs_require__(84); -var _utils = __w_pdfjs_require__(77); +var _utils = __w_pdfjs_require__(78); const XHTML_NS_ID = _namespaces.NamespaceIds.xhtml.id; const $richText = Symbol(); @@ -72193,7 +72710,7 @@ class XhtmlNamespace { exports.XhtmlNamespace = XhtmlNamespace; /***/ }), -/* 98 */ +/* 99 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -72203,9 +72720,9 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.UnknownNamespace = void 0; -var _namespaces = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(79); -var _xfa_object = __w_pdfjs_require__(76); +var _xfa_object = __w_pdfjs_require__(77); class UnknownNamespace { constructor(nsId) { @@ -72221,7 +72738,93 @@ class UnknownNamespace { exports.UnknownNamespace = UnknownNamespace; /***/ }), -/* 99 */ +/* 100 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DatasetReader = void 0; + +var _util = __w_pdfjs_require__(2); + +var _core_utils = __w_pdfjs_require__(8); + +var _xml_parser = __w_pdfjs_require__(70); + +function decodeString(str) { + try { + return (0, _util.stringToUTF8String)(str); + } catch (ex) { + (0, _util.warn)(`UTF-8 decoding failed: "${ex}".`); + return str; + } +} + +class DatasetXMLParser extends _xml_parser.SimpleXMLParser { + constructor(options) { + super(options); + this.node = null; + } + + onEndElement(name) { + const node = super.onEndElement(name); + + if (node && name === "xfa:datasets") { + this.node = node; + throw new Error("Aborting DatasetXMLParser."); + } + } + +} + +class DatasetReader { + constructor(data) { + if (data.datasets) { + this.node = new _xml_parser.SimpleXMLParser({ + hasAttributes: true + }).parseFromString(data.datasets).documentElement; + } else { + const parser = new DatasetXMLParser({ + hasAttributes: true + }); + + try { + parser.parseFromString(data["xdp:xdp"]); + } catch (_) {} + + this.node = parser.node; + } + } + + getValue(path) { + if (!this.node || !path) { + return ""; + } + + const node = this.node.searchNode((0, _core_utils.parseXFAPath)(path), 0); + + if (!node) { + return ""; + } + + const first = node.firstChild; + + if (first && first.nodeName === "value") { + return node.children.map(child => decodeString(child.textContent)); + } + + return decodeString(node.textContent); + } + +} + +exports.DatasetReader = DatasetReader; + +/***/ }), +/* 101 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -72241,7 +72844,7 @@ var _parser = __w_pdfjs_require__(27); var _base_stream = __w_pdfjs_require__(9); -var _crypto = __w_pdfjs_require__(73); +var _crypto = __w_pdfjs_require__(74); class XRef { constructor(stream, pdfManager) { @@ -73107,7 +73710,7 @@ class XRef { exports.XRef = XRef; /***/ }), -/* 100 */ +/* 102 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -73593,7 +74196,7 @@ class MessageHandler { exports.MessageHandler = MessageHandler; /***/ }), -/* 101 */ +/* 103 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -73817,8 +74420,8 @@ Object.defineProperty(exports, "WorkerMessageHandler", ({ var _worker = __w_pdfjs_require__(1); -const pdfjsVersion = '2.13.216'; -const pdfjsBuild = '399a0ec60'; +const pdfjsVersion = '2.14.305'; +const pdfjsBuild = 'eaaa8b4ad'; })(); /******/ return __webpack_exports__; |