summaryrefslogtreecommitdiff
path: root/third-party/pdfjs/build/pdf.js
diff options
context:
space:
mode:
Diffstat (limited to 'third-party/pdfjs/build/pdf.js')
-rw-r--r--third-party/pdfjs/build/pdf.js3129
1 files changed, 2046 insertions, 1083 deletions
diff --git a/third-party/pdfjs/build/pdf.js b/third-party/pdfjs/build/pdf.js
index 8d59e6dd9..e2c2e2be1 100644
--- a/third-party/pdfjs/build/pdf.js
+++ b/third-party/pdfjs/build/pdf.js
@@ -30,294 +30,209 @@
else
root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory();
})(this, function() {
-return /******/ (function(modules) { // webpackBootstrap
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // The require function
-/******/ function __w_pdfjs_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId]) {
-/******/ return installedModules[moduleId].exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ i: moduleId,
-/******/ l: false,
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.l = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __w_pdfjs_require__.m = modules;
-/******/
-/******/ // expose the module cache
-/******/ __w_pdfjs_require__.c = installedModules;
-/******/
-/******/ // define getter function for harmony exports
-/******/ __w_pdfjs_require__.d = function(exports, name, getter) {
-/******/ if(!__w_pdfjs_require__.o(exports, name)) {
-/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/ }
-/******/ };
-/******/
-/******/ // define __esModule on exports
-/******/ __w_pdfjs_require__.r = function(exports) {
-/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ }
-/******/ Object.defineProperty(exports, '__esModule', { value: true });
-/******/ };
-/******/
-/******/ // create a fake namespace object
-/******/ // mode & 1: value is a module id, require it
-/******/ // mode & 2: merge all properties of value into the ns
-/******/ // mode & 4: return value when already ns object
-/******/ // mode & 8|1: behave like require
-/******/ __w_pdfjs_require__.t = function(value, mode) {
-/******/ if(mode & 1) value = __w_pdfjs_require__(value);
-/******/ if(mode & 8) return value;
-/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/ var ns = Object.create(null);
-/******/ __w_pdfjs_require__.r(ns);
-/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/ return ns;
-/******/ };
-/******/
-/******/ // getDefaultExport function for compatibility with non-harmony modules
-/******/ __w_pdfjs_require__.n = function(module) {
-/******/ var getter = module && module.__esModule ?
-/******/ function getDefault() { return module['default']; } :
-/******/ function getModuleExports() { return module; };
-/******/ __w_pdfjs_require__.d(getter, 'a', getter);
-/******/ return getter;
-/******/ };
-/******/
-/******/ // Object.prototype.hasOwnProperty.call
-/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ // __webpack_public_path__
-/******/ __w_pdfjs_require__.p = "";
-/******/
-/******/
-/******/ // Load entry module and return exports
-/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 0);
-/******/ })
-/************************************************************************/
-/******/ ([
+return /******/ (() => { // webpackBootstrap
+/******/ "use strict";
+/******/ var __webpack_modules__ = ([
/* 0 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
-Object.defineProperty(exports, "addLinkAttributes", {
+}));
+Object.defineProperty(exports, "addLinkAttributes", ({
enumerable: true,
get: function () {
return _display_utils.addLinkAttributes;
}
-});
-Object.defineProperty(exports, "getFilenameFromUrl", {
+}));
+Object.defineProperty(exports, "getFilenameFromUrl", ({
enumerable: true,
get: function () {
return _display_utils.getFilenameFromUrl;
}
-});
-Object.defineProperty(exports, "LinkTarget", {
+}));
+Object.defineProperty(exports, "LinkTarget", ({
enumerable: true,
get: function () {
return _display_utils.LinkTarget;
}
-});
-Object.defineProperty(exports, "loadScript", {
+}));
+Object.defineProperty(exports, "loadScript", ({
enumerable: true,
get: function () {
return _display_utils.loadScript;
}
-});
-Object.defineProperty(exports, "PDFDateString", {
+}));
+Object.defineProperty(exports, "PDFDateString", ({
enumerable: true,
get: function () {
return _display_utils.PDFDateString;
}
-});
-Object.defineProperty(exports, "RenderingCancelledException", {
+}));
+Object.defineProperty(exports, "RenderingCancelledException", ({
enumerable: true,
get: function () {
return _display_utils.RenderingCancelledException;
}
-});
-Object.defineProperty(exports, "build", {
+}));
+Object.defineProperty(exports, "build", ({
enumerable: true,
get: function () {
return _api.build;
}
-});
-Object.defineProperty(exports, "getDocument", {
+}));
+Object.defineProperty(exports, "getDocument", ({
enumerable: true,
get: function () {
return _api.getDocument;
}
-});
-Object.defineProperty(exports, "LoopbackPort", {
+}));
+Object.defineProperty(exports, "LoopbackPort", ({
enumerable: true,
get: function () {
return _api.LoopbackPort;
}
-});
-Object.defineProperty(exports, "PDFDataRangeTransport", {
+}));
+Object.defineProperty(exports, "PDFDataRangeTransport", ({
enumerable: true,
get: function () {
return _api.PDFDataRangeTransport;
}
-});
-Object.defineProperty(exports, "PDFWorker", {
+}));
+Object.defineProperty(exports, "PDFWorker", ({
enumerable: true,
get: function () {
return _api.PDFWorker;
}
-});
-Object.defineProperty(exports, "version", {
+}));
+Object.defineProperty(exports, "version", ({
enumerable: true,
get: function () {
return _api.version;
}
-});
-Object.defineProperty(exports, "CMapCompressionType", {
+}));
+Object.defineProperty(exports, "CMapCompressionType", ({
enumerable: true,
get: function () {
return _util.CMapCompressionType;
}
-});
-Object.defineProperty(exports, "createObjectURL", {
+}));
+Object.defineProperty(exports, "createObjectURL", ({
enumerable: true,
get: function () {
return _util.createObjectURL;
}
-});
-Object.defineProperty(exports, "createPromiseCapability", {
+}));
+Object.defineProperty(exports, "createPromiseCapability", ({
enumerable: true,
get: function () {
return _util.createPromiseCapability;
}
-});
-Object.defineProperty(exports, "createValidAbsoluteUrl", {
+}));
+Object.defineProperty(exports, "createValidAbsoluteUrl", ({
enumerable: true,
get: function () {
return _util.createValidAbsoluteUrl;
}
-});
-Object.defineProperty(exports, "InvalidPDFException", {
+}));
+Object.defineProperty(exports, "InvalidPDFException", ({
enumerable: true,
get: function () {
return _util.InvalidPDFException;
}
-});
-Object.defineProperty(exports, "MissingPDFException", {
+}));
+Object.defineProperty(exports, "MissingPDFException", ({
enumerable: true,
get: function () {
return _util.MissingPDFException;
}
-});
-Object.defineProperty(exports, "OPS", {
+}));
+Object.defineProperty(exports, "OPS", ({
enumerable: true,
get: function () {
return _util.OPS;
}
-});
-Object.defineProperty(exports, "PasswordResponses", {
+}));
+Object.defineProperty(exports, "PasswordResponses", ({
enumerable: true,
get: function () {
return _util.PasswordResponses;
}
-});
-Object.defineProperty(exports, "PermissionFlag", {
+}));
+Object.defineProperty(exports, "PermissionFlag", ({
enumerable: true,
get: function () {
return _util.PermissionFlag;
}
-});
-Object.defineProperty(exports, "removeNullCharacters", {
+}));
+Object.defineProperty(exports, "removeNullCharacters", ({
enumerable: true,
get: function () {
return _util.removeNullCharacters;
}
-});
-Object.defineProperty(exports, "shadow", {
+}));
+Object.defineProperty(exports, "shadow", ({
enumerable: true,
get: function () {
return _util.shadow;
}
-});
-Object.defineProperty(exports, "UnexpectedResponseException", {
+}));
+Object.defineProperty(exports, "UnexpectedResponseException", ({
enumerable: true,
get: function () {
return _util.UnexpectedResponseException;
}
-});
-Object.defineProperty(exports, "UNSUPPORTED_FEATURES", {
+}));
+Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({
enumerable: true,
get: function () {
return _util.UNSUPPORTED_FEATURES;
}
-});
-Object.defineProperty(exports, "Util", {
+}));
+Object.defineProperty(exports, "Util", ({
enumerable: true,
get: function () {
return _util.Util;
}
-});
-Object.defineProperty(exports, "VerbosityLevel", {
+}));
+Object.defineProperty(exports, "VerbosityLevel", ({
enumerable: true,
get: function () {
return _util.VerbosityLevel;
}
-});
-Object.defineProperty(exports, "AnnotationLayer", {
+}));
+Object.defineProperty(exports, "AnnotationLayer", ({
enumerable: true,
get: function () {
return _annotation_layer.AnnotationLayer;
}
-});
-Object.defineProperty(exports, "apiCompatibilityParams", {
+}));
+Object.defineProperty(exports, "apiCompatibilityParams", ({
enumerable: true,
get: function () {
return _api_compatibility.apiCompatibilityParams;
}
-});
-Object.defineProperty(exports, "GlobalWorkerOptions", {
+}));
+Object.defineProperty(exports, "GlobalWorkerOptions", ({
enumerable: true,
get: function () {
return _worker_options.GlobalWorkerOptions;
}
-});
-Object.defineProperty(exports, "renderTextLayer", {
+}));
+Object.defineProperty(exports, "renderTextLayer", ({
enumerable: true,
get: function () {
return _text_layer.renderTextLayer;
}
-});
-Object.defineProperty(exports, "SVGGraphics", {
+}));
+Object.defineProperty(exports, "SVGGraphics", ({
enumerable: true,
get: function () {
return _svg.SVGGraphics;
}
-});
+}));
var _display_utils = __w_pdfjs_require__(1);
@@ -331,30 +246,30 @@ var _api_compatibility = __w_pdfjs_require__(9);
var _worker_options = __w_pdfjs_require__(12);
-var _text_layer = __w_pdfjs_require__(20);
+var _text_layer = __w_pdfjs_require__(21);
-var _svg = __w_pdfjs_require__(21);
+var _svg = __w_pdfjs_require__(22);
-const pdfjsVersion = '2.6.347';
-const pdfjsBuild = '3be9c65f';
+const pdfjsVersion = '2.7.570';
+const pdfjsBuild = 'f2c7338b0';
{
const {
isNodeJS
} = __w_pdfjs_require__(4);
if (isNodeJS) {
- const PDFNodeStream = __w_pdfjs_require__(22).PDFNodeStream;
+ const PDFNodeStream = __w_pdfjs_require__(23).PDFNodeStream;
(0, _api.setPDFNetworkStreamFactory)(params => {
return new PDFNodeStream(params);
});
} else {
- const PDFNetworkStream = __w_pdfjs_require__(25).PDFNetworkStream;
+ const PDFNetworkStream = __w_pdfjs_require__(26).PDFNetworkStream;
let PDFFetchStream;
if ((0, _display_utils.isFetchSupported)()) {
- PDFFetchStream = __w_pdfjs_require__(26).PDFFetchStream;
+ PDFFetchStream = __w_pdfjs_require__(27).PDFFetchStream;
}
(0, _api.setPDFNetworkStreamFactory)(params => {
@@ -369,21 +284,20 @@ const pdfjsBuild = '3be9c65f';
/***/ }),
/* 1 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.addLinkAttributes = addLinkAttributes;
+exports.deprecated = deprecated;
exports.getFilenameFromUrl = getFilenameFromUrl;
exports.isFetchSupported = isFetchSupported;
exports.isValidFetchUrl = isValidFetchUrl;
exports.loadScript = loadScript;
-exports.deprecated = deprecated;
-exports.PDFDateString = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.BaseCMapReaderFactory = exports.DOMCanvasFactory = exports.BaseCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;
+exports.StatTimer = exports.RenderingCancelledException = exports.PDFDateString = exports.PageViewport = exports.LinkTarget = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.BaseCMapReaderFactory = exports.BaseCanvasFactory = void 0;
var _util = __w_pdfjs_require__(2);
@@ -836,11 +750,18 @@ function isValidFetchUrl(url, baseUrl) {
}
}
-function loadScript(src) {
+function loadScript(src, removeScriptElement = false) {
return new Promise((resolve, reject) => {
const script = document.createElement("script");
script.src = src;
- script.onload = resolve;
+
+ script.onload = function (evt) {
+ if (removeScriptElement) {
+ script.remove();
+ }
+
+ resolve(evt);
+ };
script.onerror = function () {
reject(new Error(`Cannot load script at: ${script.src}`));
@@ -906,41 +827,45 @@ exports.PDFDateString = PDFDateString;
/***/ }),
/* 2 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.arrayByteLength = arrayByteLength;
exports.arraysToBytes = arraysToBytes;
exports.assert = assert;
exports.bytesToString = bytesToString;
exports.createPromiseCapability = createPromiseCapability;
+exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
+exports.encodeToXmlString = encodeToXmlString;
exports.escapeString = escapeString;
exports.getModificationDate = getModificationDate;
exports.getVerbosityLevel = getVerbosityLevel;
exports.info = info;
exports.isArrayBuffer = isArrayBuffer;
exports.isArrayEqual = isArrayEqual;
+exports.isAscii = isAscii;
exports.isBool = isBool;
exports.isNum = isNum;
-exports.isString = isString;
exports.isSameOrigin = isSameOrigin;
-exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
+exports.isString = isString;
+exports.objectFromEntries = objectFromEntries;
+exports.objectSize = objectSize;
exports.removeNullCharacters = removeNullCharacters;
exports.setVerbosityLevel = setVerbosityLevel;
exports.shadow = shadow;
exports.string32 = string32;
exports.stringToBytes = stringToBytes;
exports.stringToPDFString = stringToPDFString;
+exports.stringToUTF16BEString = stringToUTF16BEString;
exports.stringToUTF8String = stringToUTF8String;
+exports.unreachable = unreachable;
exports.utf8StringToString = utf8StringToString;
exports.warn = warn;
-exports.unreachable = unreachable;
-exports.IsEvalSupportedCached = exports.IsLittleEndianCached = exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = exports.BaseException = void 0;
+exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = 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.createObjectURL = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
__w_pdfjs_require__(3);
@@ -1073,6 +998,36 @@ const AnnotationBorderStyleType = {
UNDERLINE: 5
};
exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
+const AnnotationActionEventType = {
+ E: "Mouse Enter",
+ X: "Mouse Exit",
+ D: "Mouse Down",
+ U: "Mouse Up",
+ Fo: "Focus",
+ Bl: "Blur",
+ PO: "PageOpen",
+ PC: "PageClose",
+ PV: "PageVisible",
+ PI: "PageInvisible",
+ K: "Keystroke",
+ F: "Format",
+ V: "Validate",
+ C: "Calculate"
+};
+exports.AnnotationActionEventType = AnnotationActionEventType;
+const DocumentActionEventType = {
+ WC: "WillClose",
+ WS: "WillSave",
+ DS: "DidSave",
+ WP: "WillPrint",
+ DP: "DidPrint"
+};
+exports.DocumentActionEventType = DocumentActionEventType;
+const PageActionEventType = {
+ O: "PageOpen",
+ C: "PageClose"
+};
+exports.PageActionEventType = PageActionEventType;
const StreamType = {
UNKNOWN: "UNKNOWN",
FLATE: "FLATE",
@@ -1481,6 +1436,14 @@ function string32(value) {
return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
}
+function objectSize(obj) {
+ return Object.keys(obj).length;
+}
+
+function objectFromEntries(iterable) {
+ return Object.assign(Object.create(null), Object.fromEntries(iterable));
+}
+
function isLittleEndian() {
const buffer8 = new Uint8Array(4);
buffer8[0] = 1;
@@ -1512,14 +1475,11 @@ const IsEvalSupportedCached = {
};
exports.IsEvalSupportedCached = IsEvalSupportedCached;
-const rgbBuf = ["rgb(", 0, ",", 0, ",", 0, ")"];
+const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0"));
class Util {
- static makeCssRgb(r, g, b) {
- rgbBuf[1] = r;
- rgbBuf[3] = g;
- rgbBuf[5] = b;
- return rgbBuf.join("");
+ static makeHexColor(r, g, b) {
+ return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;
}
static transform(m1, m2) {
@@ -1641,7 +1601,31 @@ function stringToPDFString(str) {
}
function escapeString(str) {
- return str.replace(/([\(\)\\])/g, "\\$1");
+ return str.replace(/([()\\\n\r])/g, match => {
+ if (match === "\n") {
+ return "\\n";
+ } else if (match === "\r") {
+ return "\\r";
+ }
+
+ return `\\${match}`;
+ });
+}
+
+function isAscii(str) {
+ return /^[\x00-\x7F]*$/.test(str);
+}
+
+function stringToUTF16BEString(str) {
+ const buf = ["\xFE\xFF"];
+
+ for (let i = 0, ii = str.length; i < ii; i++) {
+ const char = str.charCodeAt(i);
+ buf.push(String.fromCharCode(char >> 8 & 0xff));
+ buf.push(String.fromCharCode(char & 0xff));
+ }
+
+ return buf.join("");
}
function stringToUTF8String(str) {
@@ -1678,8 +1662,8 @@ function isArrayEqual(arr1, arr2) {
});
}
-function getModificationDate(date = new Date(Date.now())) {
- const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), (date.getUTCDate() + 1).toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")];
+function getModificationDate(date = new Date()) {
+ const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")];
return buffer.join("");
}
@@ -1734,12 +1718,62 @@ const createObjectURL = function createObjectURLClosure() {
}();
exports.createObjectURL = createObjectURL;
+const XMLEntities = {
+ 0x3c: "&lt;",
+ 0x3e: "&gt;",
+ 0x26: "&amp;",
+ 0x22: "&quot;",
+ 0x27: "&apos;"
+};
+
+function encodeToXmlString(str) {
+ const buffer = [];
+ let start = 0;
+
+ for (let i = 0, ii = str.length; i < ii; i++) {
+ const char = str.codePointAt(i);
+
+ if (0x20 <= char && char <= 0x7e) {
+ const entity = XMLEntities[char];
+
+ if (entity) {
+ if (start < i) {
+ buffer.push(str.substring(start, i));
+ }
+
+ buffer.push(entity);
+ start = i + 1;
+ }
+ } else {
+ if (start < i) {
+ buffer.push(str.substring(start, i));
+ }
+
+ buffer.push(`&#x${char.toString(16).toUpperCase()};`);
+
+ if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {
+ i++;
+ }
+
+ start = i + 1;
+ }
+ }
+
+ if (buffer.length === 0) {
+ return str;
+ }
+
+ if (start < str.length) {
+ buffer.push(str.substring(start, str.length));
+ }
+
+ return buffer.join("");
+}
/***/ }),
/* 3 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {
-"use strict";
var _is_node = __w_pdfjs_require__(4);
@@ -1748,31 +1782,29 @@ var _is_node = __w_pdfjs_require__(4);
/***/ }),
/* 4 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.isNodeJS = void 0;
const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser");
exports.isNodeJS = isNodeJS;
/***/ }),
/* 5 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.getDocument = getDocument;
exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
-exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;
+exports.version = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultCMapReaderFactory = exports.DefaultCanvasFactory = exports.build = void 0;
var _util = __w_pdfjs_require__(2);
@@ -1805,7 +1837,9 @@ var _webgl = __w_pdfjs_require__(18);
const DEFAULT_RANGE_CHUNK_SIZE = 65536;
const RENDERING_CANCELLED_TIMEOUT = 100;
const DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;
+exports.DefaultCanvasFactory = DefaultCanvasFactory;
const DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;
+exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;
let createPDFNetworkStream;
function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
@@ -1979,7 +2013,7 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
return worker.messageHandler.sendWithPromise("GetDocRequest", {
docId,
- apiVersion: '2.6.347',
+ apiVersion: '2.7.570',
source: {
data: source.data,
url: source.url,
@@ -2176,6 +2210,10 @@ class PDFDocumentProxy {
return this._transport.getJavaScript();
}
+ getJSActions() {
+ return this._transport.getDocJSActions();
+ }
+
getOutline() {
return this._transport.getOutline();
}
@@ -2192,6 +2230,10 @@ class PDFDocumentProxy {
return this._transport.getMetadata();
}
+ getMarkInfo() {
+ return this._transport.getMarkInfo();
+ }
+
getData() {
return this._transport.getData();
}
@@ -2224,6 +2266,18 @@ class PDFDocumentProxy {
return this._transport.saveDocument(annotationStorage);
}
+ getFieldObjects() {
+ return this._transport.getFieldObjects();
+ }
+
+ hasJSActions() {
+ return this._transport.hasJSActions();
+ }
+
+ getCalculationOrderIds() {
+ return this._transport.getCalculationOrderIds();
+ }
+
}
exports.PDFDocumentProxy = PDFDocumentProxy;
@@ -2292,6 +2346,10 @@ class PDFPageProxy {
return this.annotationsPromise;
}
+ getJSActions() {
+ return this._jsActionsPromise || (this._jsActionsPromise = this._transport.getPageJSActions(this._pageIndex));
+ }
+
render({
canvasContext,
viewport,
@@ -2352,7 +2410,7 @@ class PDFPageProxy {
pageIndex: this._pageIndex,
intent: renderingIntent,
renderInteractiveForms: renderInteractiveForms === true,
- annotationStorage: annotationStorage && annotationStorage.getAll() || null
+ annotationStorage: annotationStorage?.getAll() || null
});
}
@@ -2551,6 +2609,7 @@ class PDFPageProxy {
this.objs.clear();
this.annotationsPromise = null;
+ this._jsActionsPromise = null;
this.pendingCleanup = false;
return Promise.all(waitOn);
}
@@ -2578,6 +2637,7 @@ class PDFPageProxy {
this.objs.clear();
this.annotationsPromise = null;
+ this._jsActionsPromise = null;
if (resetStats && this._stats) {
this._stats = new _display_utils.StatTimer();
@@ -2708,7 +2768,7 @@ class PDFPageProxy {
}
}
- intentState.streamReader.cancel(new _util.AbortException(reason && reason.message));
+ intentState.streamReader.cancel(new _util.AbortException(reason?.message));
intentState.streamReader = null;
if (this._transport.destroyed) {
@@ -2754,9 +2814,7 @@ class LoopbackPort {
let buffer, result;
if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
- const transferable = transfers && transfers.includes(buffer);
-
- if (transferable) {
+ if (transfers?.includes(buffer)) {
result = new value.constructor(buffer, value.byteOffset, value.byteLength);
} else {
result = new value.constructor(value);
@@ -2846,7 +2904,7 @@ const PDFWorker = function PDFWorkerClosure() {
isWorkerDisabled = true;
fallbackWorkerSrc = "./pdf.worker.js";
} else if (typeof document === "object" && "currentScript" in document) {
- const pdfjsFilePath = document.currentScript && document.currentScript.src;
+ const pdfjsFilePath = document.currentScript?.src;
if (pdfjsFilePath) {
fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2");
@@ -2873,7 +2931,7 @@ const PDFWorker = function PDFWorkerClosure() {
let mainWorkerMessageHandler;
try {
- mainWorkerMessageHandler = globalThis.pdfjsWorker && globalThis.pdfjsWorker.WorkerMessageHandler;
+ mainWorkerMessageHandler = globalThis.pdfjsWorker?.WorkerMessageHandler;
} catch (ex) {}
return mainWorkerMessageHandler || null;
@@ -3159,6 +3217,10 @@ class WorkerTransport {
this.setupMessageHandler();
}
+ get loadingTaskSettled() {
+ return this.loadingTask._capability.settled;
+ }
+
destroy() {
if (this.destroyCapability) {
return this.destroyCapability.promise;
@@ -3181,8 +3243,20 @@ class WorkerTransport {
this.pagePromises.length = 0;
const terminated = this.messageHandler.sendWithPromise("Terminate", null);
waitOn.push(terminated);
+
+ if (this.loadingTaskSettled) {
+ const annotationStorageResetModified = this.loadingTask.promise.then(pdfDocument => {
+ if (pdfDocument.hasOwnProperty("annotationStorage")) {
+ pdfDocument.annotationStorage.resetModified();
+ }
+ }).catch(() => {});
+ waitOn.push(annotationStorageResetModified);
+ }
+
Promise.all(waitOn).then(() => {
+ this.commonObjs.clear();
this.fontLoader.clear();
+ this._hasJSActionsPromise = null;
if (this._networkStream) {
this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated."));
@@ -3411,7 +3485,7 @@ class WorkerTransport {
let fontRegistry = null;
- if (params.pdfBug && globalThis.FontInspector && globalThis.FontInspector.enabled) {
+ if (params.pdfBug && globalThis.FontInspector?.enabled) {
fontRegistry = {
registerFont(font, url) {
globalThis.FontInspector.fontAdded(font, url);
@@ -3466,7 +3540,7 @@ class WorkerTransport {
pageProxy.objs.resolve(id, imageData);
const MAX_IMAGE_SIZE_TO_STORE = 8000000;
- if (imageData && "data" in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
+ if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) {
pageProxy.cleanupAfterRender = true;
}
@@ -3575,8 +3649,8 @@ class WorkerTransport {
saveDocument(annotationStorage) {
return this.messageHandler.sendWithPromise("SaveDocument", {
numPages: this._numPages,
- annotationStorage: annotationStorage && annotationStorage.getAll() || null,
- filename: this._fullReader ? this._fullReader.filename : null
+ annotationStorage: annotationStorage?.getAll() || null,
+ filename: this._fullReader?.filename ?? null
}).finally(() => {
if (annotationStorage) {
annotationStorage.resetModified();
@@ -3584,6 +3658,18 @@ class WorkerTransport {
});
}
+ getFieldObjects() {
+ return this.messageHandler.sendWithPromise("GetFieldObjects", null);
+ }
+
+ hasJSActions() {
+ return this._hasJSActionsPromise || (this._hasJSActionsPromise = this.messageHandler.sendWithPromise("HasJSActions", null));
+ }
+
+ getCalculationOrderIds() {
+ return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null);
+ }
+
getDestinations() {
return this.messageHandler.sendWithPromise("GetDestinations", null);
}
@@ -3626,6 +3712,16 @@ class WorkerTransport {
return this.messageHandler.sendWithPromise("GetJavaScript", null);
}
+ getDocJSActions() {
+ return this.messageHandler.sendWithPromise("GetDocJSActions", null);
+ }
+
+ getPageJSActions(pageIndex) {
+ return this.messageHandler.sendWithPromise("GetPageJSActions", {
+ pageIndex
+ });
+ }
+
getOutline() {
return this.messageHandler.sendWithPromise("GetOutline", null);
}
@@ -3645,11 +3741,16 @@ class WorkerTransport {
return {
info: results[0],
metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
- contentDispositionFilename: this._fullReader ? this._fullReader.filename : null
+ contentDispositionFilename: this._fullReader?.filename ?? null,
+ contentLength: this._fullReader?.contentLength ?? null
};
});
}
+ getMarkInfo() {
+ return this.messageHandler.sendWithPromise("GetMarkInfo", null);
+ }
+
getStats() {
return this.messageHandler.sendWithPromise("GetStats", null);
}
@@ -3670,6 +3771,7 @@ class WorkerTransport {
this.commonObjs.clear();
this.fontLoader.clear();
+ this._hasJSActionsPromise = null;
});
}
@@ -3718,7 +3820,7 @@ class PDFObjects {
has(objId) {
const obj = this._objs[objId];
- return obj ? obj.resolved : false;
+ return obj?.resolved || false;
}
resolve(objId, data) {
@@ -3810,7 +3912,7 @@ const InternalRenderTask = function InternalRenderTaskClosure() {
canvasInRendering.add(this._canvas);
}
- if (this._pdfBug && globalThis.StepperManager && globalThis.StepperManager.enabled) {
+ if (this._pdfBug && globalThis.StepperManager?.enabled) {
this.stepper = globalThis.StepperManager.create(this._pageIndex);
this.stepper.init(this.operatorList);
this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
@@ -3924,21 +4026,20 @@ const InternalRenderTask = function InternalRenderTaskClosure() {
return InternalRenderTask;
}();
-const version = '2.6.347';
+const version = '2.7.570';
exports.version = version;
-const build = '3be9c65f';
+const build = 'f2c7338b0';
exports.build = build;
/***/ }),
/* 6 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.FontLoader = exports.FontFaceObject = void 0;
var _util = __w_pdfjs_require__(2);
@@ -4043,8 +4144,7 @@ class BaseFontLoader {
}
get isFontLoadingAPISupported() {
- const supported = typeof this._document !== "undefined" && !!this._document.fonts;
- return (0, _util.shadow)(this, "isFontLoadingAPISupported", supported);
+ return (0, _util.shadow)(this, "isFontLoadingAPISupported", !!this._document?.fonts);
}
get isSyncFontLoadingSupported() {
@@ -4082,7 +4182,7 @@ exports.FontLoader = FontLoader;
} else {
const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
- if (m && m[1] >= 14) {
+ if (m?.[1] >= 14) {
supported = true;
}
}
@@ -4329,14 +4429,13 @@ exports.FontFaceObject = FontFaceObject;
/***/ }),
/* 7 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.NodeCMapReaderFactory = exports.NodeCanvasFactory = void 0;
var _display_utils = __w_pdfjs_require__(1);
@@ -4401,16 +4500,17 @@ if (_is_node.isNodeJS) {
/***/ }),
/* 8 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.AnnotationStorage = void 0;
+var _util = __w_pdfjs_require__(2);
+
class AnnotationStorage {
constructor() {
this._storage = new Map();
@@ -4430,11 +4530,26 @@ class AnnotationStorage {
}
setValue(key, value) {
- if (this._storage.get(key) !== value) {
- this._setModified();
+ const obj = this._storage.get(key);
+
+ let modified = false;
+
+ if (obj !== undefined) {
+ for (const [entry, val] of Object.entries(value)) {
+ if (obj[entry] !== val) {
+ modified = true;
+ obj[entry] = val;
+ }
+ }
+ } else {
+ this._storage.set(key, value);
+
+ modified = true;
}
- this._storage.set(key, value);
+ if (modified) {
+ this._setModified();
+ }
}
getAll() {
@@ -4442,7 +4557,7 @@ class AnnotationStorage {
return null;
}
- return Object.fromEntries(this._storage);
+ return (0, _util.objectFromEntries)(this._storage);
}
get size() {
@@ -4475,14 +4590,13 @@ exports.AnnotationStorage = AnnotationStorage;
/***/ }),
/* 9 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.apiCompatibilityParams = void 0;
var _is_node = __w_pdfjs_require__(4);
@@ -4500,27 +4614,25 @@ exports.apiCompatibilityParams = apiCompatibilityParams;
/***/ }),
/* 10 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.CanvasGraphics = void 0;
var _util = __w_pdfjs_require__(2);
var _pattern_helper = __w_pdfjs_require__(11);
-var MIN_FONT_SIZE = 16;
-var MAX_FONT_SIZE = 100;
-var MAX_GROUP_SIZE = 4096;
-var MIN_WIDTH_FACTOR = 0.65;
-var COMPILE_TYPE3_GLYPHS = true;
-var MAX_SIZE_TO_COMPILE = 1000;
-var FULL_CHUNK_HEIGHT = 16;
+const MIN_FONT_SIZE = 16;
+const MAX_FONT_SIZE = 100;
+const MAX_GROUP_SIZE = 4096;
+const COMPILE_TYPE3_GLYPHS = true;
+const MAX_SIZE_TO_COMPILE = 1000;
+const FULL_CHUNK_HEIGHT = 16;
function addContextCurrentTransform(ctx) {
if (!ctx.mozCurrentTransform) {
@@ -4540,21 +4652,21 @@ function addContextCurrentTransform(ctx) {
});
Object.defineProperty(ctx, "mozCurrentTransformInverse", {
get: function getCurrentTransformInverse() {
- var m = this._transformMatrix;
- var a = m[0],
- b = m[1],
- c = m[2],
- d = m[3],
- e = m[4],
- f = m[5];
- var ad_bc = a * d - b * c;
- var bc_ad = b * c - a * d;
+ const m = this._transformMatrix;
+ const a = m[0],
+ b = m[1],
+ c = m[2],
+ d = m[3],
+ e = m[4],
+ f = m[5];
+ const ad_bc = a * d - b * c;
+ const bc_ad = b * c - a * d;
return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];
}
});
ctx.save = function ctxSave() {
- var old = this._transformMatrix;
+ const old = this._transformMatrix;
this._transformStack.push(old);
@@ -4564,7 +4676,7 @@ function addContextCurrentTransform(ctx) {
};
ctx.restore = function ctxRestore() {
- var prev = this._transformStack.pop();
+ const prev = this._transformStack.pop();
if (prev) {
this._transformMatrix = prev;
@@ -4574,7 +4686,7 @@ function addContextCurrentTransform(ctx) {
};
ctx.translate = function ctxTranslate(x, y) {
- var m = this._transformMatrix;
+ const m = this._transformMatrix;
m[4] = m[0] * x + m[2] * y + m[4];
m[5] = m[1] * x + m[3] * y + m[5];
@@ -4582,7 +4694,7 @@ function addContextCurrentTransform(ctx) {
};
ctx.scale = function ctxScale(x, y) {
- var m = this._transformMatrix;
+ const m = this._transformMatrix;
m[0] = m[0] * x;
m[1] = m[1] * x;
m[2] = m[2] * y;
@@ -4592,7 +4704,7 @@ function addContextCurrentTransform(ctx) {
};
ctx.transform = function ctxTransform(a, b, c, d, e, f) {
- var m = this._transformMatrix;
+ const m = this._transformMatrix;
this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];
ctx._originalTransform(a, b, c, d, e, f);
@@ -4605,9 +4717,9 @@ function addContextCurrentTransform(ctx) {
};
ctx.rotate = function ctxRotate(angle) {
- var cosValue = Math.cos(angle);
- var sinValue = Math.sin(angle);
- var m = this._transformMatrix;
+ const cosValue = Math.cos(angle);
+ const sinValue = Math.sin(angle);
+ const m = this._transformMatrix;
this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];
this._originalRotate(angle);
@@ -4615,7 +4727,7 @@ function addContextCurrentTransform(ctx) {
}
}
-var CachedCanvases = function CachedCanvasesClosure() {
+const CachedCanvases = function CachedCanvasesClosure() {
function CachedCanvases(canvasFactory) {
this.canvasFactory = canvasFactory;
this.cache = Object.create(null);
@@ -4623,7 +4735,7 @@ var CachedCanvases = function CachedCanvasesClosure() {
CachedCanvases.prototype = {
getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) {
- var canvasEntry;
+ let canvasEntry;
if (this.cache[id] !== undefined) {
canvasEntry = this.cache[id];
@@ -4642,8 +4754,8 @@ var CachedCanvases = function CachedCanvasesClosure() {
},
clear() {
- for (var id in this.cache) {
- var canvasEntry = this.cache[id];
+ for (const id in this.cache) {
+ const canvasEntry = this.cache[id];
this.canvasFactory.destroy(canvasEntry);
delete this.cache[id];
}
@@ -4654,24 +4766,21 @@ var CachedCanvases = function CachedCanvasesClosure() {
}();
function compileType3Glyph(imgData) {
- var POINT_TO_PROCESS_LIMIT = 1000;
- var width = imgData.width,
- height = imgData.height;
- var i,
- j,
- j0,
- width1 = width + 1;
- var points = new Uint8Array(width1 * (height + 1));
- var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
- var lineSize = width + 7 & ~7,
- data0 = imgData.data;
- var data = new Uint8Array(lineSize * height),
- pos = 0,
- ii;
+ const POINT_TO_PROCESS_LIMIT = 1000;
+ const width = imgData.width,
+ height = imgData.height,
+ width1 = width + 1;
+ let i, ii, j, j0;
+ const points = new Uint8Array(width1 * (height + 1));
+ const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
+ const lineSize = width + 7 & ~7,
+ data0 = imgData.data;
+ const data = new Uint8Array(lineSize * height);
+ let pos = 0;
for (i = 0, ii = data0.length; i < ii; i++) {
- var mask = 128,
- elem = data0[i];
+ const elem = data0[i];
+ let mask = 128;
while (mask > 0) {
data[pos++] = elem & mask ? 0 : 255;
@@ -4679,7 +4788,7 @@ function compileType3Glyph(imgData) {
}
}
- var count = 0;
+ let count = 0;
pos = 0;
if (data[pos] !== 0) {
@@ -4710,7 +4819,7 @@ function compileType3Glyph(imgData) {
++count;
}
- var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
+ let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
for (j = 1; j < width; j++) {
sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
@@ -4759,12 +4868,12 @@ function compileType3Glyph(imgData) {
return null;
}
- var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
- var outlines = [];
+ const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
+ const outlines = [];
for (i = 0; count && i <= height; i++) {
- var p = i * width1;
- var end = p + width;
+ let p = i * width1;
+ const end = p + width;
while (p < end && !points[p]) {
p++;
@@ -4774,19 +4883,18 @@ function compileType3Glyph(imgData) {
continue;
}
- var coords = [p % width1, i];
- var type = points[p],
- p0 = p,
- pp;
+ const coords = [p % width1, i];
+ const p0 = p;
+ let type = points[p];
do {
- var step = steps[type];
+ const step = steps[type];
do {
p += step;
} while (!points[p]);
- pp = points[p];
+ const pp = points[p];
if (pp !== 5 && pp !== 10) {
type = pp;
@@ -4808,14 +4916,14 @@ function compileType3Glyph(imgData) {
--i;
}
- var drawOutline = function (c) {
+ const drawOutline = function (c) {
c.save();
c.scale(1 / width, -1 / height);
c.translate(0, -height);
c.beginPath();
for (let k = 0, kk = outlines.length; k < kk; k++) {
- var o = outlines[k];
+ const o = outlines[k];
c.moveTo(o[0], o[1]);
for (let l = 2, ll = o.length; l < ll; l += 2) {
@@ -4831,7 +4939,7 @@ function compileType3Glyph(imgData) {
return drawOutline;
}
-var CanvasExtraState = function CanvasExtraStateClosure() {
+const CanvasExtraState = function CanvasExtraStateClosure() {
function CanvasExtraState() {
this.alphaIsShape = false;
this.fontSize = 0;
@@ -4872,9 +4980,9 @@ var CanvasExtraState = function CanvasExtraStateClosure() {
return CanvasExtraState;
}();
-var CanvasGraphics = function CanvasGraphicsClosure() {
- var EXECUTION_TIME = 15;
- var EXECUTION_STEPS = 10;
+const CanvasGraphics = function CanvasGraphicsClosure() {
+ const EXECUTION_TIME = 15;
+ const EXECUTION_STEPS = 10;
function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer, optionalContentConfig) {
this.ctx = canvasCtx;
@@ -4915,17 +5023,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
return;
}
- var height = imgData.height,
- width = imgData.width;
- var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
- var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
- var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
- var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
- var srcPos = 0,
+ const height = imgData.height,
+ width = imgData.width;
+ const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+ const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+ const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+ const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+ let srcPos = 0,
destPos;
- var src = imgData.data;
- var dest = chunkImgData.data;
- var i, j, thisChunkHeight, elemsInThisChunk;
+ const src = imgData.data;
+ const dest = chunkImgData.data;
+ let i, j, thisChunkHeight, elemsInThisChunk;
let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;
if (transferMaps) {
@@ -4947,12 +5055,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {
- var srcLength = src.byteLength;
- var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
- var dest32DataLength = dest32.length;
- var fullSrcDiff = width + 7 >> 3;
- var white = 0xffffffff;
- var black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;
+ const srcLength = src.byteLength;
+ const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
+ const dest32DataLength = dest32.length;
+ const fullSrcDiff = width + 7 >> 3;
+ let white = 0xffffffff;
+ let black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;
if (transferMapGray) {
if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {
@@ -4965,12 +5073,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
destPos = 0;
for (j = 0; j < thisChunkHeight; j++) {
- var srcDiff = srcLength - srcPos;
+ const srcDiff = srcLength - srcPos;
let k = 0;
- var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
- var kEndUnrolled = kEnd & ~7;
- var mask = 0;
- var srcByte = 0;
+ const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
+ const kEndUnrolled = kEnd & ~7;
+ let mask = 0;
+ let srcByte = 0;
for (; k < kEndUnrolled; k += 8) {
srcByte = src[srcPos++];
@@ -5096,26 +5204,27 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
function putBinaryImageMask(ctx, imgData) {
- var height = imgData.height,
- width = imgData.width;
- var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
- var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
- var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
- var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
- var srcPos = 0;
- var src = imgData.data;
- var dest = chunkImgData.data;
-
- for (var i = 0; i < totalChunks; i++) {
- var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
- var destPos = 3;
-
- for (var j = 0; j < thisChunkHeight; j++) {
- var mask = 0;
-
- for (var k = 0; k < width; k++) {
+ const height = imgData.height,
+ width = imgData.width;
+ const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+ const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+ const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+ const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+ let srcPos = 0;
+ const src = imgData.data;
+ const dest = chunkImgData.data;
+
+ for (let i = 0; i < totalChunks; i++) {
+ const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+ let destPos = 3;
+
+ for (let j = 0; j < thisChunkHeight; j++) {
+ let elem,
+ mask = 0;
+
+ for (let k = 0; k < width; k++) {
if (!mask) {
- var elem = src[srcPos++];
+ elem = src[srcPos++];
mask = 128;
}
@@ -5130,10 +5239,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
function copyCtxState(sourceCtx, destCtx) {
- var properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"];
+ const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"];
- for (var i = 0, ii = properties.length; i < ii; i++) {
- var property = properties[i];
+ for (let i = 0, ii = properties.length; i < ii; i++) {
+ const property = properties[i];
if (sourceCtx[property] !== undefined) {
destCtx[property] = sourceCtx[property];
@@ -5165,17 +5274,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
function composeSMaskBackdrop(bytes, r0, g0, b0) {
- var length = bytes.length;
+ const length = bytes.length;
- for (var i = 3; i < length; i += 4) {
- var alpha = bytes[i];
+ for (let i = 3; i < length; i += 4) {
+ const alpha = bytes[i];
if (alpha === 0) {
bytes[i - 3] = r0;
bytes[i - 2] = g0;
bytes[i - 1] = b0;
} else if (alpha < 255) {
- var alpha_ = 255 - alpha;
+ const alpha_ = 255 - alpha;
bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
@@ -5184,30 +5293,30 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
function composeSMaskAlpha(maskData, layerData, transferMap) {
- var length = maskData.length;
- var scale = 1 / 255;
+ const length = maskData.length;
+ const scale = 1 / 255;
- for (var i = 3; i < length; i += 4) {
- var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
+ for (let i = 3; i < length; i += 4) {
+ const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
layerData[i] = layerData[i] * alpha * scale | 0;
}
}
function composeSMaskLuminosity(maskData, layerData, transferMap) {
- var length = maskData.length;
+ const length = maskData.length;
- for (var i = 3; i < length; i += 4) {
- var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
+ for (let i = 3; i < length; i += 4) {
+ const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
}
}
function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {
- var hasBackdrop = !!backdrop;
- var r0 = hasBackdrop ? backdrop[0] : 0;
- var g0 = hasBackdrop ? backdrop[1] : 0;
- var b0 = hasBackdrop ? backdrop[2] : 0;
- var composeFn;
+ const hasBackdrop = !!backdrop;
+ const r0 = hasBackdrop ? backdrop[0] : 0;
+ const g0 = hasBackdrop ? backdrop[1] : 0;
+ const b0 = hasBackdrop ? backdrop[2] : 0;
+ let composeFn;
if (subtype === "Luminosity") {
composeFn = composeSMaskLuminosity;
@@ -5215,13 +5324,13 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
composeFn = composeSMaskAlpha;
}
- var PIXELS_TO_PROCESS = 1048576;
- var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
+ const PIXELS_TO_PROCESS = 1048576;
+ const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
- for (var row = 0; row < height; row += chunkSize) {
- var chunkHeight = Math.min(chunkSize, height - row);
- var maskData = maskCtx.getImageData(0, row, width, chunkHeight);
- var layerData = layerCtx.getImageData(0, row, width, chunkHeight);
+ for (let row = 0; row < height; row += chunkSize) {
+ const chunkHeight = Math.min(chunkSize, height - row);
+ const maskData = maskCtx.getImageData(0, row, width, chunkHeight);
+ const layerData = layerCtx.getImageData(0, row, width, chunkHeight);
if (hasBackdrop) {
composeSMaskBackdrop(maskData.data, r0, g0, b0);
@@ -5233,10 +5342,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
function composeSMask(ctx, smask, layerCtx, webGLContext) {
- var mask = smask.canvas;
- var maskCtx = smask.context;
+ const mask = smask.canvas;
+ const maskCtx = smask.context;
ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);
- var backdrop = smask.backdrop || null;
+ const backdrop = smask.backdrop || null;
if (!smask.transferMap && webGLContext.isEnabled) {
const composed = webGLContext.composeSMask({
@@ -5256,10 +5365,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
ctx.drawImage(mask, 0, 0);
}
- var LINE_CAP_STYLES = ["butt", "round", "square"];
- var LINE_JOIN_STYLES = ["miter", "round", "bevel"];
- var NORMAL_CLIP = {};
- var EO_CLIP = {};
+ const LINE_CAP_STYLES = ["butt", "round", "square"];
+ const LINE_JOIN_STYLES = ["miter", "round", "bevel"];
+ const NORMAL_CLIP = {};
+ const EO_CLIP = {};
CanvasGraphics.prototype = {
beginDrawing({
transform,
@@ -5267,15 +5376,15 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
transparency = false,
background = null
}) {
- var width = this.ctx.canvas.width;
- var height = this.ctx.canvas.height;
+ const width = this.ctx.canvas.width;
+ const height = this.ctx.canvas.height;
this.ctx.save();
this.ctx.fillStyle = background || "rgb(255, 255, 255)";
this.ctx.fillRect(0, 0, width, height);
this.ctx.restore();
if (transparency) {
- var transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true);
+ const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true);
this.compositeCtx = this.ctx;
this.transparentCanvas = transparentCanvas.canvas;
this.ctx = transparentCanvas.context;
@@ -5292,6 +5401,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.ctx.transform.apply(this.ctx, viewport.transform);
this.baseTransform = this.ctx.mozCurrentTransform.slice();
+ this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]);
if (this.imageLayer) {
this.imageLayer.beginLayout();
@@ -5299,21 +5409,21 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
},
executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
- var argsArray = operatorList.argsArray;
- var fnArray = operatorList.fnArray;
- var i = executionStartIdx || 0;
- var argsArrayLen = argsArray.length;
+ const argsArray = operatorList.argsArray;
+ const fnArray = operatorList.fnArray;
+ let i = executionStartIdx || 0;
+ const argsArrayLen = argsArray.length;
if (argsArrayLen === i) {
return i;
}
- var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function";
- var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
- var steps = 0;
- var commonObjs = this.commonObjs;
- var objs = this.objs;
- var fnId;
+ const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function";
+ const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
+ let steps = 0;
+ const commonObjs = this.commonObjs;
+ const objs = this.objs;
+ let fnId;
while (true) {
if (stepper !== undefined && i === stepper.nextBreakPoint) {
@@ -5353,8 +5463,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
},
endDrawing: function CanvasGraphics_endDrawing() {
- if (this.current.activeSMask !== null) {
- this.endSMaskGroup();
+ while (this.stateStack.length || this.current.activeSMask !== null) {
+ this.restore();
}
this.ctx.restore();
@@ -5389,7 +5499,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.ctx.miterLimit = limit;
},
setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {
- var ctx = this.ctx;
+ const ctx = this.ctx;
if (ctx.setLineDash !== undefined) {
ctx.setLineDash(dashArray);
@@ -5402,10 +5512,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
setFlatness(flatness) {},
setGState: function CanvasGraphics_setGState(states) {
- for (var i = 0, ii = states.length; i < ii; i++) {
- var state = states[i];
- var key = state[0];
- var value = state[1];
+ for (let i = 0, ii = states.length; i < ii; i++) {
+ const state = states[i];
+ const key = state[0];
+ const value = state[1];
switch (key) {
case "LW":
@@ -5477,15 +5587,15 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
},
beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {
- var activeSMask = this.current.activeSMask;
- var drawnWidth = activeSMask.canvas.width;
- var drawnHeight = activeSMask.canvas.height;
- var cacheId = "smaskGroupAt" + this.groupLevel;
- var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
- var currentCtx = this.ctx;
- var currentTransform = currentCtx.mozCurrentTransform;
+ const activeSMask = this.current.activeSMask;
+ const drawnWidth = activeSMask.canvas.width;
+ const drawnHeight = activeSMask.canvas.height;
+ const cacheId = "smaskGroupAt" + this.groupLevel;
+ const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+ const currentCtx = this.ctx;
+ const currentTransform = currentCtx.mozCurrentTransform;
this.ctx.save();
- var groupCtx = scratchCanvas.context;
+ const groupCtx = scratchCanvas.context;
groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);
groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
groupCtx.transform.apply(groupCtx, currentTransform);
@@ -5497,7 +5607,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.groupLevel++;
},
suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {
- var groupCtx = this.ctx;
+ const groupCtx = this.ctx;
this.groupLevel--;
this.ctx = this.groupStack.pop();
composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
@@ -5506,7 +5616,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
copyCtxState(groupCtx, this.ctx);
this.current.resumeSMaskCtx = groupCtx;
- var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
+ const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
this.ctx.transform.apply(this.ctx, deltaTransform);
groupCtx.save();
@@ -5514,28 +5624,28 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);
groupCtx.restore();
},
- resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {
- var groupCtx = this.current.resumeSMaskCtx;
- var currentCtx = this.ctx;
+ resumeSMaskGroup: function CanvasGraphics_resumeSMaskGroup() {
+ const groupCtx = this.current.resumeSMaskCtx;
+ const currentCtx = this.ctx;
this.ctx = groupCtx;
this.groupStack.push(currentCtx);
this.groupLevel++;
},
endSMaskGroup: function CanvasGraphics_endSMaskGroup() {
- var groupCtx = this.ctx;
+ const groupCtx = this.ctx;
this.groupLevel--;
this.ctx = this.groupStack.pop();
composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
this.ctx.restore();
copyCtxState(groupCtx, this.ctx);
- var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
+ const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
this.ctx.transform.apply(this.ctx, deltaTransform);
},
save: function CanvasGraphics_save() {
this.ctx.save();
- var old = this.current;
+ const old = this.current;
this.stateStack.push(old);
this.current = old.clone();
this.current.resumeSMaskCtx = null;
@@ -5554,6 +5664,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.ctx.restore();
this.pendingClip = null;
this._cachedGetSinglePixelWidth = null;
+ } else {
+ this.current.activeSMask = null;
}
},
transform: function CanvasGraphics_transform(a, b, c, d, e, f) {
@@ -5561,34 +5673,30 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this._cachedGetSinglePixelWidth = null;
},
constructPath: function CanvasGraphics_constructPath(ops, args) {
- var ctx = this.ctx;
- var current = this.current;
- var x = current.x,
+ const ctx = this.ctx;
+ const current = this.current;
+ let x = current.x,
y = current.y;
- for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {
+ for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {
switch (ops[i] | 0) {
case _util.OPS.rectangle:
x = args[j++];
y = args[j++];
- var width = args[j++];
- var height = args[j++];
-
- if (width === 0 && ctx.lineWidth < this.getSinglePixelWidth()) {
- width = this.getSinglePixelWidth();
- }
+ const width = args[j++];
+ const height = args[j++];
+ const xw = x + width;
+ const yh = y + height;
+ ctx.moveTo(x, y);
- if (height === 0 && ctx.lineWidth < this.getSinglePixelWidth()) {
- height = this.getSinglePixelWidth();
+ if (width === 0 || height === 0) {
+ ctx.lineTo(xw, yh);
+ } else {
+ ctx.lineTo(xw, y);
+ ctx.lineTo(xw, yh);
+ ctx.lineTo(x, yh);
}
- var xw = x + width;
- var yh = y + height;
- ctx.moveTo(x, y);
- ctx.lineTo(xw, y);
- ctx.lineTo(xw, yh);
- ctx.lineTo(x, yh);
- ctx.lineTo(x, y);
ctx.closePath();
break;
@@ -5638,24 +5746,43 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
},
stroke: function CanvasGraphics_stroke(consumePath) {
consumePath = typeof consumePath !== "undefined" ? consumePath : true;
- var ctx = this.ctx;
- var strokeColor = this.current.strokeColor;
+ const ctx = this.ctx;
+ const strokeColor = this.current.strokeColor;
ctx.globalAlpha = this.current.strokeAlpha;
if (this.contentVisible) {
- if (strokeColor && strokeColor.hasOwnProperty("type") && strokeColor.type === "Pattern") {
+ if (typeof strokeColor === "object" && strokeColor?.getPattern) {
ctx.save();
const transform = ctx.mozCurrentTransform;
const scale = _util.Util.singularValueDecompose2dScale(transform)[0];
ctx.strokeStyle = strokeColor.getPattern(ctx, this);
- ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth * scale);
+ const lineWidth = this.getSinglePixelWidth();
+ const scaledLineWidth = this.current.lineWidth * scale;
+
+ if (lineWidth < 0 && -lineWidth >= scaledLineWidth) {
+ ctx.resetTransform();
+ ctx.lineWidth = Math.round(this._combinedScaleFactor);
+ } else {
+ ctx.lineWidth = Math.max(lineWidth, scaledLineWidth);
+ }
+
ctx.stroke();
ctx.restore();
} else {
- ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth);
- ctx.stroke();
+ const lineWidth = this.getSinglePixelWidth();
+
+ if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {
+ ctx.save();
+ ctx.resetTransform();
+ ctx.lineWidth = Math.round(this._combinedScaleFactor);
+ ctx.stroke();
+ ctx.restore();
+ } else {
+ ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
+ ctx.stroke();
+ }
}
}
@@ -5671,10 +5798,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
},
fill: function CanvasGraphics_fill(consumePath) {
consumePath = typeof consumePath !== "undefined" ? consumePath : true;
- var ctx = this.ctx;
- var fillColor = this.current.fillColor;
- var isPatternFill = this.current.patternFill;
- var needRestore = false;
+ const ctx = this.ctx;
+ const fillColor = this.current.fillColor;
+ const isPatternFill = this.current.patternFill;
+ let needRestore = false;
if (isPatternFill) {
ctx.save();
@@ -5742,8 +5869,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.current.y = this.current.lineY = 0;
},
endText: function CanvasGraphics_endText() {
- var paths = this.pendingTextPaths;
- var ctx = this.ctx;
+ const paths = this.pendingTextPaths;
+ const ctx = this.ctx;
if (paths === undefined) {
ctx.beginPath();
@@ -5753,8 +5880,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
ctx.save();
ctx.beginPath();
- for (var i = 0; i < paths.length; i++) {
- var path = paths[i];
+ for (let i = 0; i < paths.length; i++) {
+ const path = paths[i];
ctx.setTransform.apply(ctx, path.transform);
ctx.translate(path.x, path.y);
path.addToPath(ctx, path.fontSize);
@@ -5778,14 +5905,14 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.current.leading = -leading;
},
setFont: function CanvasGraphics_setFont(fontRefName, size) {
- var fontObj = this.commonObjs.get(fontRefName);
- var current = this.current;
+ const fontObj = this.commonObjs.get(fontRefName);
+ const current = this.current;
if (!fontObj) {
throw new Error(`Can't find font for ${fontRefName}`);
}
- current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
+ current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;
if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
(0, _util.warn)("Invalid font matrix for font " + fontRefName);
@@ -5805,7 +5932,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
return;
}
- var name = fontObj.loadedName || "sans-serif";
+ const name = fontObj.loadedName || "sans-serif";
let bold = "normal";
if (fontObj.black) {
@@ -5814,8 +5941,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
bold = "bold";
}
- var italic = fontObj.italic ? "italic" : "normal";
- var typeface = `"${name}", ${fontObj.fallbackName}`;
+ const italic = fontObj.italic ? "italic" : "normal";
+ const typeface = `"${name}", ${fontObj.fallbackName}`;
let browserFontSize = size;
if (size < MIN_FONT_SIZE) {
@@ -5851,16 +5978,16 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.moveText(0, this.current.leading);
},
- paintChar(character, x, y, patternTransform) {
- var ctx = this.ctx;
- var current = this.current;
- var font = current.font;
- var textRenderingMode = current.textRenderingMode;
- var fontSize = current.fontSize / current.fontSizeScale;
- var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
- var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
+ paintChar(character, x, y, patternTransform, resetLineWidthToOne) {
+ const ctx = this.ctx;
+ const current = this.current;
+ const font = current.font;
+ const textRenderingMode = current.textRenderingMode;
+ const fontSize = current.fontSize / current.fontSizeScale;
+ const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
+ const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
const patternFill = current.patternFill && !font.missingFile;
- var addToPath;
+ let addToPath;
if (font.disableFontFace || isAddToPathSet || patternFill) {
addToPath = font.getPathGenerator(this.commonObjs, character);
@@ -5881,6 +6008,11 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+ if (resetLineWidthToOne) {
+ ctx.resetTransform();
+ ctx.lineWidth = Math.round(this._combinedScaleFactor);
+ }
+
ctx.stroke();
}
@@ -5891,12 +6023,21 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
- ctx.strokeText(character, x, y);
+ if (resetLineWidthToOne) {
+ ctx.save();
+ ctx.moveTo(x, y);
+ ctx.resetTransform();
+ ctx.lineWidth = Math.round(this._combinedScaleFactor);
+ ctx.strokeText(character, 0, 0);
+ ctx.restore();
+ } else {
+ ctx.strokeText(character, x, y);
+ }
}
}
if (isAddToPathSet) {
- var paths = this.pendingTextPaths || (this.pendingTextPaths = []);
+ const paths = this.pendingTextPaths || (this.pendingTextPaths = []);
paths.push({
transform: ctx.mozCurrentTransform,
x,
@@ -5913,10 +6054,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
} = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
ctx.scale(1.5, 1);
ctx.fillText("I", 0, 10);
- var data = ctx.getImageData(0, 0, 10, 10).data;
- var enabled = false;
+ const data = ctx.getImageData(0, 0, 10, 10).data;
+ let enabled = false;
- for (var i = 3; i < data.length; i += 4) {
+ for (let i = 3; i < data.length; i += 4) {
if (data[i] > 0 && data[i] < 255) {
enabled = true;
break;
@@ -5927,31 +6068,31 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
},
showText: function CanvasGraphics_showText(glyphs) {
- var current = this.current;
- var font = current.font;
+ const current = this.current;
+ const font = current.font;
if (font.isType3Font) {
return this.showType3Text(glyphs);
}
- var fontSize = current.fontSize;
+ const fontSize = current.fontSize;
if (fontSize === 0) {
return undefined;
}
- var ctx = this.ctx;
- var fontSizeScale = current.fontSizeScale;
- var charSpacing = current.charSpacing;
- var wordSpacing = current.wordSpacing;
- var fontDirection = current.fontDirection;
- var textHScale = current.textHScale * fontDirection;
- var glyphsLength = glyphs.length;
- var vertical = font.vertical;
- var spacingDir = vertical ? 1 : -1;
- var defaultVMetrics = font.defaultVMetrics;
- var widthAdvanceScale = fontSize * current.fontMatrix[0];
- var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;
+ const ctx = this.ctx;
+ const fontSizeScale = current.fontSizeScale;
+ const charSpacing = current.charSpacing;
+ const wordSpacing = current.wordSpacing;
+ const fontDirection = current.fontDirection;
+ const textHScale = current.textHScale * fontDirection;
+ const glyphsLength = glyphs.length;
+ const vertical = font.vertical;
+ const spacingDir = vertical ? 1 : -1;
+ const defaultVMetrics = font.defaultVMetrics;
+ const widthAdvanceScale = fontSize * current.fontMatrix[0];
+ const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;
ctx.save();
let patternTransform;
@@ -5972,15 +6113,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
ctx.scale(textHScale, 1);
}
- var lineWidth = current.lineWidth;
- var scale = current.textMatrixScale;
+ let lineWidth = current.lineWidth;
+ let resetLineWidthToOne = false;
+ const scale = current.textMatrixScale;
if (scale === 0 || lineWidth === 0) {
- var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
+ const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
this._cachedGetSinglePixelWidth = null;
- lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;
+ lineWidth = this.getSinglePixelWidth();
+ resetLineWidthToOne = lineWidth < 0;
}
} else {
lineWidth /= scale;
@@ -5992,30 +6135,28 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
ctx.lineWidth = lineWidth;
- var x = 0,
+ let x = 0,
i;
for (i = 0; i < glyphsLength; ++i) {
- var glyph = glyphs[i];
+ const glyph = glyphs[i];
if ((0, _util.isNum)(glyph)) {
x += spacingDir * glyph * fontSize / 1000;
continue;
}
- var restoreNeeded = false;
- var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
- var character = glyph.fontChar;
- var accent = glyph.accent;
- var scaledX, scaledY, scaledAccentX, scaledAccentY;
- var width = glyph.width;
+ let restoreNeeded = false;
+ const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+ const character = glyph.fontChar;
+ const accent = glyph.accent;
+ let scaledX, scaledY;
+ let width = glyph.width;
if (vertical) {
- var vmetric, vx, vy;
- vmetric = glyph.vmetric || defaultVMetrics;
- vx = glyph.vmetric ? vmetric[1] : width * 0.5;
- vx = -vx * widthAdvanceScale;
- vy = vmetric[2] * widthAdvanceScale;
+ const vmetric = glyph.vmetric || defaultVMetrics;
+ const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;
+ const vy = vmetric[2] * widthAdvanceScale;
width = vmetric ? -vmetric[0] : width;
scaledX = vx / fontSizeScale;
scaledY = (x + vy) / fontSizeScale;
@@ -6025,10 +6166,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
if (font.remeasure && width > 0) {
- var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
+ const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
- var characterScaleX = width / measuredWidth;
+ const characterScaleX = width / measuredWidth;
restoreNeeded = true;
ctx.save();
ctx.scale(characterScaleX, 1);
@@ -6042,17 +6183,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
if (simpleFillText && !accent) {
ctx.fillText(character, scaledX, scaledY);
} else {
- this.paintChar(character, scaledX, scaledY, patternTransform);
+ this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne);
if (accent) {
- scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;
- scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;
- this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);
+ const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;
+ const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;
+ this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform, resetLineWidthToOne);
}
}
}
- var charWidth;
+ let charWidth;
if (vertical) {
charWidth = width * widthAdvanceScale - spacing * fontDirection;
@@ -6076,19 +6217,19 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
ctx.restore();
},
showType3Text: function CanvasGraphics_showType3Text(glyphs) {
- var ctx = this.ctx;
- var current = this.current;
- var font = current.font;
- var fontSize = current.fontSize;
- var fontDirection = current.fontDirection;
- var spacingDir = font.vertical ? 1 : -1;
- var charSpacing = current.charSpacing;
- var wordSpacing = current.wordSpacing;
- var textHScale = current.textHScale * fontDirection;
- var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
- var glyphsLength = glyphs.length;
- var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
- var i, glyph, width, spacingLength;
+ const ctx = this.ctx;
+ const current = this.current;
+ const font = current.font;
+ const fontSize = current.fontSize;
+ const fontDirection = current.fontDirection;
+ const spacingDir = font.vertical ? 1 : -1;
+ const charSpacing = current.charSpacing;
+ const wordSpacing = current.wordSpacing;
+ const textHScale = current.textHScale * fontDirection;
+ const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+ const glyphsLength = glyphs.length;
+ const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
+ let i, glyph, width, spacingLength;
if (isTextInvisible || fontSize === 0) {
return;
@@ -6110,8 +6251,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
continue;
}
- var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
- var operatorList = font.charProcOperatorList[glyph.operatorListId];
+ const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+ const operatorList = font.charProcOperatorList[glyph.operatorListId];
if (!operatorList) {
(0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`);
@@ -6127,7 +6268,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.restore();
}
- var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
+ const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
width = transformed[0] * fontSize + spacing;
ctx.translate(width, 0);
@@ -6144,12 +6285,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.endPath();
},
getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {
- var pattern;
+ let pattern;
if (IR[0] === "TilingPattern") {
- var color = IR[1];
- var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
- var canvasGraphicsFactory = {
+ const color = IR[1];
+ const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
+ const canvasGraphicsFactory = {
createCanvasGraphics: ctx => {
return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext);
}
@@ -6169,13 +6310,13 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.current.patternFill = true;
},
setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
- var color = _util.Util.makeCssRgb(r, g, b);
+ const color = _util.Util.makeHexColor(r, g, b);
this.ctx.strokeStyle = color;
this.current.strokeColor = color;
},
setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
- var color = _util.Util.makeCssRgb(r, g, b);
+ const color = _util.Util.makeHexColor(r, g, b);
this.ctx.fillStyle = color;
this.current.fillColor = color;
@@ -6186,29 +6327,29 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
return;
}
- var ctx = this.ctx;
+ const ctx = this.ctx;
this.save();
- var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);
+ const pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);
ctx.fillStyle = pattern.getPattern(ctx, this, true);
- var inv = ctx.mozCurrentTransformInverse;
+ const inv = ctx.mozCurrentTransformInverse;
if (inv) {
- var canvas = ctx.canvas;
- var width = canvas.width;
- var height = canvas.height;
+ const canvas = ctx.canvas;
+ const width = canvas.width;
+ const height = canvas.height;
- var bl = _util.Util.applyTransform([0, 0], inv);
+ const bl = _util.Util.applyTransform([0, 0], inv);
- var br = _util.Util.applyTransform([0, height], inv);
+ const br = _util.Util.applyTransform([0, height], inv);
- var ul = _util.Util.applyTransform([width, 0], inv);
+ const ul = _util.Util.applyTransform([width, 0], inv);
- var ur = _util.Util.applyTransform([width, height], inv);
+ const ur = _util.Util.applyTransform([width, height], inv);
- var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
- var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
- var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
- var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
+ const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
+ const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
+ const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
+ const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
} else {
this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
@@ -6237,8 +6378,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.baseTransform = this.ctx.mozCurrentTransform;
if (bbox) {
- var width = bbox[2] - bbox[0];
- var height = bbox[3] - bbox[1];
+ const width = bbox[2] - bbox[0];
+ const height = bbox[3] - bbox[1];
this.ctx.rect(bbox[0], bbox[1], width, height);
this.clip();
this.endPath();
@@ -6258,7 +6399,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
this.save();
- var currentCtx = this.ctx;
+ const currentCtx = this.ctx;
if (!group.isolated) {
(0, _util.info)("TODO: Support non-isolated groups.");
@@ -6268,7 +6409,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
(0, _util.warn)("Knockout groups not supported.");
}
- var currentTransform = currentCtx.mozCurrentTransform;
+ const currentTransform = currentCtx.mozCurrentTransform;
if (group.matrix) {
currentCtx.transform.apply(currentCtx, group.matrix);
@@ -6278,15 +6419,15 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
throw new Error("Bounding box is required.");
}
- var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
+ let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
- var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
+ const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
- var offsetX = Math.floor(bounds[0]);
- var offsetY = Math.floor(bounds[1]);
- var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
- var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
- var scaleX = 1,
+ const offsetX = Math.floor(bounds[0]);
+ const offsetY = Math.floor(bounds[1]);
+ let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
+ let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
+ let scaleX = 1,
scaleY = 1;
if (drawnWidth > MAX_GROUP_SIZE) {
@@ -6299,14 +6440,14 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
drawnHeight = MAX_GROUP_SIZE;
}
- var cacheId = "groupAt" + this.groupLevel;
+ let cacheId = "groupAt" + this.groupLevel;
if (group.smask) {
cacheId += "_smask_" + this.smaskCounter++ % 2;
}
- var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
- var groupCtx = scratchCanvas.context;
+ const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+ const groupCtx = scratchCanvas.context;
groupCtx.scale(1 / scaleX, 1 / scaleY);
groupCtx.translate(-offsetX, -offsetY);
groupCtx.transform.apply(groupCtx, currentTransform);
@@ -6343,7 +6484,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
this.groupLevel--;
- var groupCtx = this.ctx;
+ const groupCtx = this.ctx;
this.ctx = this.groupStack.pop();
if (this.ctx.imageSmoothingEnabled !== undefined) {
@@ -6376,8 +6517,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
this.current = new CanvasExtraState();
if (Array.isArray(rect) && rect.length === 4) {
- var width = rect[2] - rect[0];
- var height = rect[3] - rect[1];
+ const width = rect[2] - rect[0];
+ const height = rect[3] - rect[1];
this.ctx.rect(rect[0], rect[1], width, height);
this.clip();
this.endPath();
@@ -6394,12 +6535,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
return;
}
- var ctx = this.ctx;
- var width = img.width,
- height = img.height;
- var fillColor = this.current.fillColor;
- var isPatternFill = this.current.patternFill;
- var glyph = this.processingType3;
+ const ctx = this.ctx;
+ const width = img.width,
+ height = img.height;
+ const fillColor = this.current.fillColor;
+ const isPatternFill = this.current.patternFill;
+ const glyph = this.processingType3;
if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
@@ -6413,13 +6554,13 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
}
- if (glyph && glyph.compiled) {
+ if (glyph?.compiled) {
glyph.compiled(ctx);
return;
}
- var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
- var maskCtx = maskCanvas.context;
+ const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+ const maskCtx = maskCanvas.context;
maskCtx.save();
putBinaryImageMask(maskCtx, img);
maskCtx.globalCompositeOperation = "source-in";
@@ -6434,21 +6575,21 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
return;
}
- var width = imgData.width;
- var height = imgData.height;
- var fillColor = this.current.fillColor;
- var isPatternFill = this.current.patternFill;
- var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
- var maskCtx = maskCanvas.context;
+ const width = imgData.width;
+ const height = imgData.height;
+ const fillColor = this.current.fillColor;
+ const isPatternFill = this.current.patternFill;
+ const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+ const maskCtx = maskCanvas.context;
maskCtx.save();
putBinaryImageMask(maskCtx, imgData);
maskCtx.globalCompositeOperation = "source-in";
maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
maskCtx.fillRect(0, 0, width, height);
maskCtx.restore();
- var ctx = this.ctx;
+ const ctx = this.ctx;
- for (var i = 0, ii = positions.length; i < ii; i += 2) {
+ for (let i = 0, ii = positions.length; i < ii; i += 2) {
ctx.save();
ctx.transform(scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]);
ctx.scale(1, -1);
@@ -6462,16 +6603,16 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
return;
}
- var ctx = this.ctx;
- var fillColor = this.current.fillColor;
- var isPatternFill = this.current.patternFill;
-
- for (var i = 0, ii = images.length; i < ii; i++) {
- var image = images[i];
- var width = image.width,
- height = image.height;
- var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
- var maskCtx = maskCanvas.context;
+ const ctx = this.ctx;
+ const fillColor = this.current.fillColor;
+ const isPatternFill = this.current.patternFill;
+
+ for (let i = 0, ii = images.length; i < ii; i++) {
+ const image = images[i];
+ const width = image.width,
+ height = image.height;
+ const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+ const maskCtx = maskCanvas.context;
maskCtx.save();
putBinaryImageMask(maskCtx, image);
maskCtx.globalCompositeOperation = "source-in";
@@ -6511,11 +6652,11 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
return;
}
- var width = imgData.width;
- var height = imgData.height;
- var map = [];
+ const width = imgData.width;
+ const height = imgData.height;
+ const map = [];
- for (var i = 0, ii = positions.length; i < ii; i += 2) {
+ for (let i = 0, ii = positions.length; i < ii; i += 2) {
map.push({
transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],
x: 0,
@@ -6532,35 +6673,35 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
return;
}
- var width = imgData.width;
- var height = imgData.height;
- var ctx = this.ctx;
+ const width = imgData.width;
+ const height = imgData.height;
+ const ctx = this.ctx;
this.save();
ctx.scale(1 / width, -1 / height);
- var currentTransform = ctx.mozCurrentTransformInverse;
- var a = currentTransform[0],
- b = currentTransform[1];
- var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);
- var c = currentTransform[2],
- d = currentTransform[3];
- var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);
- var imgToPaint, tmpCanvas;
+ const currentTransform = ctx.mozCurrentTransformInverse;
+ const a = currentTransform[0],
+ b = currentTransform[1];
+ let widthScale = Math.max(Math.sqrt(a * a + b * b), 1);
+ const c = currentTransform[2],
+ d = currentTransform[3];
+ let heightScale = Math.max(Math.sqrt(c * c + d * d), 1);
+ let imgToPaint, tmpCanvas, tmpCtx;
if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) {
imgToPaint = imgData;
} else {
tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height);
- var tmpCtx = tmpCanvas.context;
+ tmpCtx = tmpCanvas.context;
putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
imgToPaint = tmpCanvas.canvas;
}
- var paintWidth = width,
+ let paintWidth = width,
paintHeight = height;
- var tmpCanvasId = "prescale1";
+ let tmpCanvasId = "prescale1";
while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
- var newWidth = paintWidth,
+ let newWidth = paintWidth,
newHeight = paintHeight;
if (widthScale > 2 && paintWidth > 1) {
@@ -6586,7 +6727,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);
if (this.imageLayer) {
- var position = this.getCanvasPosition(0, -height);
+ const position = this.getCanvasPosition(0, -height);
this.imageLayer.appendImage({
imgData,
left: position[0],
@@ -6603,22 +6744,22 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
return;
}
- var ctx = this.ctx;
- var w = imgData.width;
- var h = imgData.height;
- var tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h);
- var tmpCtx = tmpCanvas.context;
+ const ctx = this.ctx;
+ const w = imgData.width;
+ const h = imgData.height;
+ const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h);
+ const tmpCtx = tmpCanvas.context;
putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
- for (var i = 0, ii = map.length; i < ii; i++) {
- var entry = map[i];
+ for (let i = 0, ii = map.length; i < ii; i++) {
+ const entry = map[i];
ctx.save();
ctx.transform.apply(ctx, entry.transform);
ctx.scale(1, -1);
ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
if (this.imageLayer) {
- var position = this.getCanvasPosition(entry.x, entry.y);
+ const position = this.getCanvasPosition(entry.x, entry.y);
this.imageLayer.appendImage({
imgData,
left: position[0],
@@ -6665,7 +6806,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
beginCompat: function CanvasGraphics_beginCompat() {},
endCompat: function CanvasGraphics_endCompat() {},
consumePath: function CanvasGraphics_consumePath() {
- var ctx = this.ctx;
+ const ctx = this.ctx;
if (this.pendingClip) {
if (this.pendingClip === EO_CLIP) {
@@ -6680,17 +6821,28 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
ctx.beginPath();
},
- getSinglePixelWidth(scale) {
+ getSinglePixelWidth() {
if (this._cachedGetSinglePixelWidth === null) {
- const inverse = this.ctx.mozCurrentTransformInverse;
- this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3]));
+ const m = this.ctx.mozCurrentTransform;
+ const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);
+ const sqNorm1 = m[0] ** 2 + m[2] ** 2;
+ const sqNorm2 = m[1] ** 2 + m[3] ** 2;
+ const pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet;
+
+ if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {
+ this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight);
+ } else if (absDet > Number.EPSILON) {
+ this._cachedGetSinglePixelWidth = pixelHeight * 1.0000001;
+ } else {
+ this._cachedGetSinglePixelWidth = 1;
+ }
}
return this._cachedGetSinglePixelWidth;
},
getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {
- var transform = this.ctx.mozCurrentTransform;
+ const transform = this.ctx.mozCurrentTransform;
return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];
},
isContentVisible: function CanvasGraphics_isContentVisible() {
@@ -6704,7 +6856,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
}
};
- for (var op in _util.OPS) {
+ for (const op in _util.OPS) {
CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];
}
@@ -6715,20 +6867,19 @@ exports.CanvasGraphics = CanvasGraphics;
/***/ }),
/* 11 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.getShadingPatternFromIR = getShadingPatternFromIR;
exports.TilingPattern = void 0;
var _util = __w_pdfjs_require__(2);
-var ShadingIRs = {};
+const ShadingIRs = {};
function applyBoundingBox(ctx, bbox) {
if (!bbox || typeof Path2D === "undefined") {
@@ -6744,18 +6895,17 @@ function applyBoundingBox(ctx, bbox) {
ShadingIRs.RadialAxial = {
fromIR: function RadialAxial_fromIR(raw) {
- var type = raw[1];
- var bbox = raw[2];
- var colorStops = raw[3];
- var p0 = raw[4];
- var p1 = raw[5];
- var r0 = raw[6];
- var r1 = raw[7];
+ const type = raw[1];
+ const bbox = raw[2];
+ const colorStops = raw[3];
+ const p0 = raw[4];
+ const p1 = raw[5];
+ const r0 = raw[6];
+ const r1 = raw[7];
return {
- type: "Pattern",
getPattern: function RadialAxial_getPattern(ctx) {
applyBoundingBox(ctx, bbox);
- var grad;
+ let grad;
if (type === "axial") {
grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
@@ -6763,8 +6913,8 @@ ShadingIRs.RadialAxial = {
grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
}
- for (var i = 0, ii = colorStops.length; i < ii; ++i) {
- var c = colorStops[i];
+ for (let i = 0, ii = colorStops.length; i < ii; ++i) {
+ const c = colorStops[i];
grad.addColorStop(c[0], c[1]);
}
@@ -6774,13 +6924,13 @@ ShadingIRs.RadialAxial = {
}
};
-var createMeshCanvas = function createMeshCanvasClosure() {
+const createMeshCanvas = function createMeshCanvasClosure() {
function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
- var coords = context.coords,
- colors = context.colors;
- var bytes = data.data,
- rowSize = data.width * 4;
- var tmp;
+ const coords = context.coords,
+ colors = context.colors;
+ const bytes = data.data,
+ rowSize = data.width * 4;
+ let tmp;
if (coords[p1 + 1] > coords[p2 + 1]) {
tmp = p1;
@@ -6809,32 +6959,32 @@ var createMeshCanvas = function createMeshCanvasClosure() {
c2 = tmp;
}
- var x1 = (coords[p1] + context.offsetX) * context.scaleX;
- var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
- var x2 = (coords[p2] + context.offsetX) * context.scaleX;
- var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
- var x3 = (coords[p3] + context.offsetX) * context.scaleX;
- var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
+ const x1 = (coords[p1] + context.offsetX) * context.scaleX;
+ const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
+ const x2 = (coords[p2] + context.offsetX) * context.scaleX;
+ const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
+ const x3 = (coords[p3] + context.offsetX) * context.scaleX;
+ const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
if (y1 >= y3) {
return;
}
- var c1r = colors[c1],
- c1g = colors[c1 + 1],
- c1b = colors[c1 + 2];
- var c2r = colors[c2],
- c2g = colors[c2 + 1],
- c2b = colors[c2 + 2];
- var c3r = colors[c3],
- c3g = colors[c3 + 1],
- c3b = colors[c3 + 2];
- var minY = Math.round(y1),
- maxY = Math.round(y3);
- var xa, car, cag, cab;
- var xb, cbr, cbg, cbb;
-
- for (var y = minY; y <= maxY; y++) {
+ const c1r = colors[c1],
+ c1g = colors[c1 + 1],
+ c1b = colors[c1 + 2];
+ const c2r = colors[c2],
+ c2g = colors[c2 + 1],
+ c2b = colors[c2 + 2];
+ const c3r = colors[c3],
+ c3g = colors[c3 + 1],
+ c3b = colors[c3 + 2];
+ const minY = Math.round(y1),
+ maxY = Math.round(y3);
+ let xa, car, cag, cab;
+ let xb, cbr, cbg, cbb;
+
+ for (let y = minY; y <= maxY; y++) {
if (y < y2) {
let k;
@@ -6881,11 +7031,11 @@ var createMeshCanvas = function createMeshCanvasClosure() {
cbr = c1r - (c1r - c3r) * k;
cbg = c1g - (c1g - c3g) * k;
cbb = c1b - (c1b - c3b) * k;
- var x1_ = Math.round(Math.min(xa, xb));
- var x2_ = Math.round(Math.max(xa, xb));
- var j = rowSize * y + x1_ * 4;
+ const x1_ = Math.round(Math.min(xa, xb));
+ const x2_ = Math.round(Math.max(xa, xb));
+ let j = rowSize * y + x1_ * 4;
- for (var x = x1_; x <= x2_; x++) {
+ for (let x = x1_; x <= x2_; x++) {
k = (xa - x) / (xa - xb);
if (k < 0) {
@@ -6903,20 +7053,20 @@ var createMeshCanvas = function createMeshCanvasClosure() {
}
function drawFigure(data, figure, context) {
- var ps = figure.coords;
- var cs = figure.colors;
- var i, ii;
+ const ps = figure.coords;
+ const cs = figure.colors;
+ let i, ii;
switch (figure.type) {
case "lattice":
- var verticesPerRow = figure.verticesPerRow;
- var rows = Math.floor(ps.length / verticesPerRow) - 1;
- var cols = verticesPerRow - 1;
+ const verticesPerRow = figure.verticesPerRow;
+ const rows = Math.floor(ps.length / verticesPerRow) - 1;
+ const cols = verticesPerRow - 1;
for (i = 0; i < rows; i++) {
- var q = i * verticesPerRow;
+ let q = i * verticesPerRow;
- for (var j = 0; j < cols; j++, q++) {
+ for (let j = 0; j < cols; j++, q++) {
drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);
drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
}
@@ -6937,18 +7087,18 @@ var createMeshCanvas = function createMeshCanvasClosure() {
}
function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) {
- var EXPECTED_SCALE = 1.1;
- var MAX_PATTERN_SIZE = 3000;
- var BORDER_SIZE = 2;
- var offsetX = Math.floor(bounds[0]);
- var offsetY = Math.floor(bounds[1]);
- var boundsWidth = Math.ceil(bounds[2]) - offsetX;
- var boundsHeight = Math.ceil(bounds[3]) - offsetY;
- var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
- var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
- var scaleX = boundsWidth / width;
- var scaleY = boundsHeight / height;
- var context = {
+ const EXPECTED_SCALE = 1.1;
+ const MAX_PATTERN_SIZE = 3000;
+ const BORDER_SIZE = 2;
+ const offsetX = Math.floor(bounds[0]);
+ const offsetY = Math.floor(bounds[1]);
+ const boundsWidth = Math.ceil(bounds[2]) - offsetX;
+ const boundsHeight = Math.ceil(bounds[3]) - offsetY;
+ const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
+ const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
+ const scaleX = boundsWidth / width;
+ const scaleY = boundsHeight / height;
+ const context = {
coords,
colors,
offsetX: -offsetX,
@@ -6956,9 +7106,9 @@ var createMeshCanvas = function createMeshCanvasClosure() {
scaleX: 1 / scaleX,
scaleY: 1 / scaleY
};
- var paddedWidth = width + BORDER_SIZE * 2;
- var paddedHeight = height + BORDER_SIZE * 2;
- var canvas, tmpCanvas, i, ii;
+ const paddedWidth = width + BORDER_SIZE * 2;
+ const paddedHeight = height + BORDER_SIZE * 2;
+ let canvas, tmpCanvas, i, ii;
if (webGLContext.isEnabled) {
canvas = webGLContext.drawFigures({
@@ -6973,11 +7123,11 @@ var createMeshCanvas = function createMeshCanvasClosure() {
canvas = tmpCanvas.canvas;
} else {
tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false);
- var tmpCtx = tmpCanvas.context;
- var data = tmpCtx.createImageData(width, height);
+ const tmpCtx = tmpCanvas.context;
+ const data = tmpCtx.createImageData(width, height);
if (backgroundColor) {
- var bytes = data.data;
+ const bytes = data.data;
for (i = 0, ii = bytes.length; i < ii; i += 4) {
bytes[i] = backgroundColor[0];
@@ -7009,18 +7159,17 @@ var createMeshCanvas = function createMeshCanvasClosure() {
ShadingIRs.Mesh = {
fromIR: function Mesh_fromIR(raw) {
- var coords = raw[2];
- var colors = raw[3];
- var figures = raw[4];
- var bounds = raw[5];
- var matrix = raw[6];
- var bbox = raw[7];
- var background = raw[8];
+ const coords = raw[2];
+ const colors = raw[3];
+ const figures = raw[4];
+ const bounds = raw[5];
+ const matrix = raw[6];
+ const bbox = raw[7];
+ const background = raw[8];
return {
- type: "Pattern",
getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {
applyBoundingBox(ctx, bbox);
- var scale;
+ let scale;
if (shadingFill) {
scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);
@@ -7028,13 +7177,13 @@ ShadingIRs.Mesh = {
scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);
if (matrix) {
- var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);
+ const matrixScale = _util.Util.singularValueDecompose2dScale(matrix);
scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
}
}
- var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);
+ const temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);
if (!shadingFill) {
ctx.setTransform.apply(ctx, owner.baseTransform);
@@ -7054,7 +7203,6 @@ ShadingIRs.Mesh = {
ShadingIRs.Dummy = {
fromIR: function Dummy_fromIR() {
return {
- type: "Pattern",
getPattern: function Dummy_fromIR_getPattern() {
return "hotpink";
}
@@ -7063,7 +7211,7 @@ ShadingIRs.Dummy = {
};
function getShadingPatternFromIR(raw) {
- var shadingIR = ShadingIRs[raw[0]];
+ const shadingIR = ShadingIRs[raw[0]];
if (!shadingIR) {
throw new Error(`Unknown IR type: ${raw[0]}`);
@@ -7072,12 +7220,12 @@ function getShadingPatternFromIR(raw) {
return shadingIR.fromIR(raw);
}
-var TilingPattern = function TilingPatternClosure() {
- var PaintType = {
+const TilingPattern = function TilingPatternClosure() {
+ const PaintType = {
COLORED: 1,
UNCOLORED: 2
};
- var MAX_PATTERN_SIZE = 3000;
+ const MAX_PATTERN_SIZE = 3000;
function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {
this.operatorList = IR[2];
@@ -7090,36 +7238,35 @@ var TilingPattern = function TilingPatternClosure() {
this.color = color;
this.canvasGraphicsFactory = canvasGraphicsFactory;
this.baseTransform = baseTransform;
- this.type = "Pattern";
this.ctx = ctx;
}
TilingPattern.prototype = {
createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {
- var operatorList = this.operatorList;
- var bbox = this.bbox;
- var xstep = this.xstep;
- var ystep = this.ystep;
- var paintType = this.paintType;
- var tilingType = this.tilingType;
- var color = this.color;
- var canvasGraphicsFactory = this.canvasGraphicsFactory;
+ const operatorList = this.operatorList;
+ const bbox = this.bbox;
+ const xstep = this.xstep;
+ const ystep = this.ystep;
+ const paintType = this.paintType;
+ const tilingType = this.tilingType;
+ const color = this.color;
+ const canvasGraphicsFactory = this.canvasGraphicsFactory;
(0, _util.info)("TilingType: " + tilingType);
- var x0 = bbox[0],
- y0 = bbox[1],
- x1 = bbox[2],
- y1 = bbox[3];
+ const x0 = bbox[0],
+ y0 = bbox[1],
+ x1 = bbox[2],
+ y1 = bbox[3];
- var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
+ const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
- var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
+ const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
- var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
- var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
- var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
- var tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true);
- var tmpCtx = tmpCanvas.context;
- var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
+ const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
+ const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
+ const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
+ const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true);
+ const tmpCtx = tmpCanvas.context;
+ const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
graphics.groupLevel = owner.groupLevel;
this.setFillAndStrokeStyleToContext(graphics, paintType, color);
graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);
@@ -7132,8 +7279,8 @@ var TilingPattern = function TilingPatternClosure() {
},
getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) {
step = Math.abs(step);
- var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);
- var size = Math.ceil(step * scale);
+ const maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);
+ let size = Math.ceil(step * scale);
if (size >= maxSize) {
size = maxSize;
@@ -7148,8 +7295,8 @@ var TilingPattern = function TilingPatternClosure() {
},
clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {
if (Array.isArray(bbox) && bbox.length === 4) {
- var bboxWidth = x1 - x0;
- var bboxHeight = y1 - y0;
+ const bboxWidth = x1 - x0;
+ const bboxHeight = y1 - y0;
graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
graphics.clip();
graphics.endPath();
@@ -7161,7 +7308,7 @@ var TilingPattern = function TilingPatternClosure() {
switch (paintType) {
case PaintType.COLORED:
- var ctx = this.ctx;
+ const ctx = this.ctx;
context.fillStyle = ctx.fillStyle;
context.strokeStyle = ctx.strokeStyle;
current.fillColor = ctx.fillStyle;
@@ -7169,7 +7316,7 @@ var TilingPattern = function TilingPatternClosure() {
break;
case PaintType.UNCOLORED:
- var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);
+ const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]);
context.fillStyle = cssColor;
context.strokeStyle = cssColor;
@@ -7185,7 +7332,7 @@ var TilingPattern = function TilingPatternClosure() {
ctx = this.ctx;
ctx.setTransform.apply(ctx, this.baseTransform);
ctx.transform.apply(ctx, this.matrix);
- var temporaryPatternCanvas = this.createPatternCanvas(owner);
+ const temporaryPatternCanvas = this.createPatternCanvas(owner);
return ctx.createPattern(temporaryPatternCanvas, "repeat");
}
};
@@ -7196,14 +7343,13 @@ exports.TilingPattern = TilingPattern;
/***/ }),
/* 12 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.GlobalWorkerOptions = void 0;
const GlobalWorkerOptions = Object.create(null);
exports.GlobalWorkerOptions = GlobalWorkerOptions;
@@ -7212,14 +7358,13 @@ GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? ""
/***/ }),
/* 13 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.MessageHandler = void 0;
var _util = __w_pdfjs_require__(2);
@@ -7713,14 +7858,13 @@ exports.MessageHandler = MessageHandler;
/***/ }),
/* 14 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.Metadata = void 0;
var _util = __w_pdfjs_require__(2);
@@ -7731,13 +7875,17 @@ class Metadata {
constructor(data) {
(0, _util.assert)(typeof data === "string", "Metadata: input is not a string");
data = this._repair(data);
- const parser = new _xml_parser.SimpleXMLParser();
+ const parser = new _xml_parser.SimpleXMLParser({
+ lowerCaseName: true
+ });
const xmlDocument = parser.parseFromString(data);
this._metadataMap = new Map();
if (xmlDocument) {
this._parse(xmlDocument);
}
+
+ this._data = data;
}
_repair(data) {
@@ -7780,49 +7928,79 @@ class Metadata {
});
}
+ _getSequence(entry) {
+ const name = entry.nodeName;
+
+ if (name !== "rdf:bag" && name !== "rdf:seq" && name !== "rdf:alt") {
+ return null;
+ }
+
+ return entry.childNodes.filter(node => node.nodeName === "rdf:li");
+ }
+
+ _getCreators(entry) {
+ if (entry.nodeName !== "dc:creator") {
+ return false;
+ }
+
+ if (!entry.hasChildNodes()) {
+ return true;
+ }
+
+ const seqNode = entry.childNodes[0];
+ const authors = this._getSequence(seqNode) || [];
+
+ this._metadataMap.set(entry.nodeName, authors.map(node => node.textContent.trim()));
+
+ return true;
+ }
+
_parse(xmlDocument) {
let rdf = xmlDocument.documentElement;
- if (rdf.nodeName.toLowerCase() !== "rdf:rdf") {
+ if (rdf.nodeName !== "rdf:rdf") {
rdf = rdf.firstChild;
- while (rdf && rdf.nodeName.toLowerCase() !== "rdf:rdf") {
+ while (rdf && rdf.nodeName !== "rdf:rdf") {
rdf = rdf.nextSibling;
}
}
- const nodeName = rdf ? rdf.nodeName.toLowerCase() : null;
-
- if (!rdf || nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) {
+ if (!rdf || rdf.nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) {
return;
}
- const children = rdf.childNodes;
-
- for (let i = 0, ii = children.length; i < ii; i++) {
- const desc = children[i];
-
- if (desc.nodeName.toLowerCase() !== "rdf:description") {
+ for (const desc of rdf.childNodes) {
+ if (desc.nodeName !== "rdf:description") {
continue;
}
- for (let j = 0, jj = desc.childNodes.length; j < jj; j++) {
- if (desc.childNodes[j].nodeName.toLowerCase() !== "#text") {
- const entry = desc.childNodes[j];
- const name = entry.nodeName.toLowerCase();
+ for (const entry of desc.childNodes) {
+ const name = entry.nodeName;
- this._metadataMap.set(name, entry.textContent.trim());
+ if (name === "#text") {
+ continue;
+ }
+
+ if (this._getCreators(entry)) {
+ continue;
}
+
+ this._metadataMap.set(name, entry.textContent.trim());
}
}
}
+ getRaw() {
+ return this._data;
+ }
+
get(name) {
- return this._metadataMap.has(name) ? this._metadataMap.get(name) : null;
+ return this._metadataMap.get(name) ?? null;
}
getAll() {
- return Object.fromEntries(this._metadataMap);
+ return (0, _util.objectFromEntries)(this._metadataMap);
}
has(name) {
@@ -7835,15 +8013,17 @@ exports.Metadata = Metadata;
/***/ }),
/* 15 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
-exports.SimpleXMLParser = void 0;
+}));
+exports.SimpleXMLParser = exports.SimpleDOMNode = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
const XMLParserErrorCode = {
NoError: 0,
EndOfDocument: -1,
@@ -7877,9 +8057,9 @@ class XMLParserBase {
_resolveEntities(s) {
return s.replace(/&([^;]+);/g, (all, entity) => {
if (entity.substring(0, 2) === "#x") {
- return String.fromCharCode(parseInt(entity.substring(2), 16));
+ return String.fromCodePoint(parseInt(entity.substring(2), 16));
} else if (entity.substring(0, 1) === "#") {
- return String.fromCharCode(parseInt(entity.substring(1), 10));
+ return String.fromCodePoint(parseInt(entity.substring(1), 10));
}
switch (entity) {
@@ -8184,14 +8364,111 @@ class SimpleDOMNode {
return this.childNodes && this.childNodes.length > 0;
}
+ searchNode(paths, pos) {
+ if (pos >= paths.length) {
+ return this;
+ }
+
+ const component = paths[pos];
+ const stack = [];
+ let node = this;
+
+ while (true) {
+ if (component.name === node.nodeName) {
+ if (component.pos === 0) {
+ const res = node.searchNode(paths, pos + 1);
+
+ if (res !== null) {
+ return res;
+ }
+ } else if (stack.length === 0) {
+ return null;
+ } else {
+ const [parent] = stack.pop();
+ let siblingPos = 0;
+
+ for (const child of parent.childNodes) {
+ if (component.name === child.nodeName) {
+ if (siblingPos === component.pos) {
+ return child.searchNode(paths, pos + 1);
+ }
+
+ siblingPos++;
+ }
+ }
+
+ return node.searchNode(paths, pos + 1);
+ }
+ }
+
+ if (node.childNodes && node.childNodes.length !== 0) {
+ stack.push([node, 0]);
+ node = node.childNodes[0];
+ } else if (stack.length === 0) {
+ return null;
+ } else {
+ while (stack.length !== 0) {
+ const [parent, currentPos] = stack.pop();
+ const newPos = currentPos + 1;
+
+ if (newPos < parent.childNodes.length) {
+ stack.push([parent, newPos]);
+ node = parent.childNodes[newPos];
+ break;
+ }
+ }
+
+ if (stack.length === 0) {
+ return null;
+ }
+ }
+ }
+ }
+
+ dump(buffer) {
+ if (this.nodeName === "#text") {
+ buffer.push((0, _util.encodeToXmlString)(this.nodeValue));
+ return;
+ }
+
+ buffer.push(`<${this.nodeName}`);
+
+ if (this.attributes) {
+ for (const attribute of this.attributes) {
+ buffer.push(` ${attribute.name}="${(0, _util.encodeToXmlString)(attribute.value)}"`);
+ }
+ }
+
+ if (this.hasChildNodes()) {
+ buffer.push(">");
+
+ for (const child of this.childNodes) {
+ child.dump(buffer);
+ }
+
+ buffer.push(`</${this.nodeName}>`);
+ } else if (this.nodeValue) {
+ buffer.push(`>${(0, _util.encodeToXmlString)(this.nodeValue)}</${this.nodeName}>`);
+ } else {
+ buffer.push("/>");
+ }
+ }
+
}
+exports.SimpleDOMNode = SimpleDOMNode;
+
class SimpleXMLParser extends XMLParserBase {
- constructor() {
+ constructor({
+ hasAttributes = false,
+ lowerCaseName = false
+ }) {
super();
this._currentFragment = null;
this._stack = null;
this._errorCode = XMLParserErrorCode.NoError;
+ this._hasAttributes = hasAttributes;
+ this._lowerCaseName = lowerCaseName;
}
parseFromString(data) {
@@ -8241,9 +8518,17 @@ class SimpleXMLParser extends XMLParserBase {
}
onBeginElement(name, attributes, isEmpty) {
+ if (this._lowerCaseName) {
+ name = name.toLowerCase();
+ }
+
const node = new SimpleDOMNode(name);
node.childNodes = [];
+ if (this._hasAttributes) {
+ node.attributes = attributes;
+ }
+
this._currentFragment.push(node);
if (isEmpty) {
@@ -8278,14 +8563,13 @@ exports.SimpleXMLParser = SimpleXMLParser;
/***/ }),
/* 16 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.OptionalContentConfig = void 0;
var _util = __w_pdfjs_require__(2);
@@ -8434,7 +8718,7 @@ class OptionalContentConfig {
return null;
}
- return Object.fromEntries(this._groups);
+ return (0, _util.objectFromEntries)(this._groups);
}
getGroup(id) {
@@ -8447,14 +8731,13 @@ exports.OptionalContentConfig = OptionalContentConfig;
/***/ }),
/* 17 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.PDFDataTransportStream = void 0;
var _util = __w_pdfjs_require__(2);
@@ -8466,7 +8749,7 @@ class PDFDataTransportStream {
this._progressiveDone = params.progressiveDone || false;
const initialData = params.initialData;
- if (initialData && initialData.length > 0) {
+ if (initialData?.length > 0) {
const buffer = new Uint8Array(initialData).buffer;
this._queuedChunks.push(buffer);
@@ -8531,14 +8814,14 @@ class PDFDataTransportStream {
}
get _progressiveDataLength() {
- return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
+ return this._fullRequestReader?._loaded ?? 0;
}
_onProgress(evt) {
if (evt.total === undefined) {
const firstReader = this._rangeReaders[0];
- if (firstReader && firstReader.onProgress) {
+ if (firstReader?.onProgress) {
firstReader.onProgress({
loaded: evt.loaded
});
@@ -8546,7 +8829,7 @@ class PDFDataTransportStream {
} else {
const fullReader = this._fullRequestReader;
- if (fullReader && fullReader.onProgress) {
+ if (fullReader?.onProgress) {
fullReader.onProgress({
loaded: evt.loaded,
total: evt.total
@@ -8802,14 +9085,13 @@ class PDFDataTransportStreamRangeReader {
/***/ }),
/* 18 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.WebGLContext = void 0;
var _util = __w_pdfjs_require__(2);
@@ -8857,15 +9139,15 @@ class WebGLContext {
exports.WebGLContext = WebGLContext;
-var WebGLUtils = function WebGLUtilsClosure() {
+const WebGLUtils = function WebGLUtilsClosure() {
function loadShader(gl, code, shaderType) {
- var shader = gl.createShader(shaderType);
+ const shader = gl.createShader(shaderType);
gl.shaderSource(shader, code);
gl.compileShader(shader);
- var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
+ const compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
if (!compiled) {
- var errorMsg = gl.getShaderInfoLog(shader);
+ const errorMsg = gl.getShaderInfoLog(shader);
throw new Error("Error during shader compilation: " + errorMsg);
}
@@ -8881,17 +9163,17 @@ var WebGLUtils = function WebGLUtilsClosure() {
}
function createProgram(gl, shaders) {
- var program = gl.createProgram();
+ const program = gl.createProgram();
- for (var i = 0, ii = shaders.length; i < ii; ++i) {
+ for (let i = 0, ii = shaders.length; i < ii; ++i) {
gl.attachShader(program, shaders[i]);
}
gl.linkProgram(program);
- var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
+ const linked = gl.getProgramParameter(program, gl.LINK_STATUS);
if (!linked) {
- var errorMsg = gl.getProgramInfoLog(program);
+ const errorMsg = gl.getProgramInfoLog(program);
throw new Error("Error during program linking: " + errorMsg);
}
@@ -8900,7 +9182,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
function createTexture(gl, image, textureId) {
gl.activeTexture(textureId);
- var texture = gl.createTexture();
+ const texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
@@ -8910,7 +9192,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
return texture;
}
- var currentGL, currentCanvas;
+ let currentGL, currentCanvas;
function generateGL() {
if (currentGL) {
@@ -8923,7 +9205,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
});
}
- var smaskVertexShaderCode = "\
+ const smaskVertexShaderCode = "\
attribute vec2 a_position; \
attribute vec2 a_texCoord; \
\
@@ -8937,7 +9219,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
\
v_texCoord = a_texCoord; \
} ";
- var smaskFragmentShaderCode = "\
+ const smaskFragmentShaderCode = "\
precision mediump float; \
\
uniform vec4 u_backdrop; \
@@ -8965,30 +9247,29 @@ var WebGLUtils = function WebGLUtilsClosure() {
imageColor.rgb *= imageColor.a; \
gl_FragColor = imageColor; \
} ";
- var smaskCache = null;
+ let smaskCache = null;
function initSmaskGL() {
- var canvas, gl;
generateGL();
- canvas = currentCanvas;
+ const canvas = currentCanvas;
currentCanvas = null;
- gl = currentGL;
+ const gl = currentGL;
currentGL = null;
- var vertexShader = createVertexShader(gl, smaskVertexShaderCode);
- var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);
- var program = createProgram(gl, [vertexShader, fragmentShader]);
+ const vertexShader = createVertexShader(gl, smaskVertexShaderCode);
+ const fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);
+ const program = createProgram(gl, [vertexShader, fragmentShader]);
gl.useProgram(program);
- var cache = {};
+ const cache = {};
cache.gl = gl;
cache.canvas = canvas;
cache.resolutionLocation = gl.getUniformLocation(program, "u_resolution");
cache.positionLocation = gl.getAttribLocation(program, "a_position");
cache.backdropLocation = gl.getUniformLocation(program, "u_backdrop");
cache.subtypeLocation = gl.getUniformLocation(program, "u_subtype");
- var texCoordLocation = gl.getAttribLocation(program, "a_texCoord");
- var texLayerLocation = gl.getUniformLocation(program, "u_image");
- var texMaskLocation = gl.getUniformLocation(program, "u_mask");
- var texCoordBuffer = gl.createBuffer();
+ const texCoordLocation = gl.getAttribLocation(program, "a_texCoord");
+ const texLayerLocation = gl.getUniformLocation(program, "u_image");
+ const texMaskLocation = gl.getUniformLocation(program, "u_mask");
+ const texCoordBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW);
gl.enableVertexAttribArray(texCoordLocation);
@@ -8999,16 +9280,16 @@ var WebGLUtils = function WebGLUtilsClosure() {
}
function composeSMask(layer, mask, properties) {
- var width = layer.width,
- height = layer.height;
+ const width = layer.width,
+ height = layer.height;
if (!smaskCache) {
initSmaskGL();
}
- var cache = smaskCache,
- canvas = cache.canvas,
- gl = cache.gl;
+ const cache = smaskCache,
+ canvas = cache.canvas,
+ gl = cache.gl;
canvas.width = width;
canvas.height = height;
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
@@ -9021,9 +9302,9 @@ var WebGLUtils = function WebGLUtilsClosure() {
}
gl.uniform1i(cache.subtypeLocation, properties.subtype === "Luminosity" ? 1 : 0);
- var texture = createTexture(gl, layer, gl.TEXTURE0);
- var maskTexture = createTexture(gl, mask, gl.TEXTURE1);
- var buffer = gl.createBuffer();
+ const texture = createTexture(gl, layer, gl.TEXTURE0);
+ const maskTexture = createTexture(gl, mask, gl.TEXTURE1);
+ const buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW);
gl.enableVertexAttribArray(cache.positionLocation);
@@ -9040,7 +9321,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
return canvas;
}
- var figuresVertexShaderCode = "\
+ const figuresVertexShaderCode = "\
attribute vec2 a_position; \
attribute vec3 a_color; \
\
@@ -9057,7 +9338,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
\
v_color = vec4(a_color / 255.0, 1.0); \
} ";
- var figuresFragmentShaderCode = "\
+ const figuresFragmentShaderCode = "\
precision mediump float; \
\
varying vec4 v_color; \
@@ -9065,20 +9346,19 @@ var WebGLUtils = function WebGLUtilsClosure() {
void main() { \
gl_FragColor = v_color; \
} ";
- var figuresCache = null;
+ let figuresCache = null;
function initFiguresGL() {
- var canvas, gl;
generateGL();
- canvas = currentCanvas;
+ const canvas = currentCanvas;
currentCanvas = null;
- gl = currentGL;
+ const gl = currentGL;
currentGL = null;
- var vertexShader = createVertexShader(gl, figuresVertexShaderCode);
- var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);
- var program = createProgram(gl, [vertexShader, fragmentShader]);
+ const vertexShader = createVertexShader(gl, figuresVertexShaderCode);
+ const fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);
+ const program = createProgram(gl, [vertexShader, fragmentShader]);
gl.useProgram(program);
- var cache = {};
+ const cache = {};
cache.gl = gl;
cache.canvas = canvas;
cache.resolutionLocation = gl.getUniformLocation(program, "u_resolution");
@@ -9094,20 +9374,19 @@ var WebGLUtils = function WebGLUtilsClosure() {
initFiguresGL();
}
- var cache = figuresCache,
- canvas = cache.canvas,
- gl = cache.gl;
+ const cache = figuresCache,
+ canvas = cache.canvas,
+ gl = cache.gl;
canvas.width = width;
canvas.height = height;
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
gl.uniform2f(cache.resolutionLocation, width, height);
- var count = 0;
- var i, ii, rows;
+ let count = 0;
- for (i = 0, ii = figures.length; i < ii; i++) {
+ for (let i = 0, ii = figures.length; i < ii; i++) {
switch (figures[i].type) {
case "lattice":
- rows = figures[i].coords.length / figures[i].verticesPerRow | 0;
+ const rows = figures[i].coords.length / figures[i].verticesPerRow | 0;
count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;
break;
@@ -9117,27 +9396,27 @@ var WebGLUtils = function WebGLUtilsClosure() {
}
}
- var coords = new Float32Array(count * 2);
- var colors = new Uint8Array(count * 3);
- var coordsMap = context.coords,
- colorsMap = context.colors;
- var pIndex = 0,
+ const coords = new Float32Array(count * 2);
+ const colors = new Uint8Array(count * 3);
+ const coordsMap = context.coords,
+ colorsMap = context.colors;
+ let pIndex = 0,
cIndex = 0;
- for (i = 0, ii = figures.length; i < ii; i++) {
- var figure = figures[i],
- ps = figure.coords,
- cs = figure.colors;
+ for (let i = 0, ii = figures.length; i < ii; i++) {
+ const figure = figures[i],
+ ps = figure.coords,
+ cs = figure.colors;
switch (figure.type) {
case "lattice":
- var cols = figure.verticesPerRow;
- rows = ps.length / cols | 0;
+ const cols = figure.verticesPerRow;
+ const rows = ps.length / cols | 0;
- for (var row = 1; row < rows; row++) {
- var offset = row * cols + 1;
+ for (let row = 1; row < rows; row++) {
+ let offset = row * cols + 1;
- for (var col = 1; col < cols; col++, offset++) {
+ for (let col = 1; col < cols; col++, offset++) {
coords[pIndex] = coordsMap[ps[offset - cols - 1]];
coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];
coords[pIndex + 2] = coordsMap[ps[offset - cols]];
@@ -9176,7 +9455,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
break;
case "triangles":
- for (var j = 0, jj = ps.length; j < jj; j++) {
+ for (let j = 0, jj = ps.length; j < jj; j++) {
coords[pIndex] = coordsMap[ps[j]];
coords[pIndex + 1] = coordsMap[ps[j] + 1];
colors[cIndex] = colorsMap[cs[j]];
@@ -9197,12 +9476,12 @@ var WebGLUtils = function WebGLUtilsClosure() {
}
gl.clear(gl.COLOR_BUFFER_BIT);
- var coordsBuffer = gl.createBuffer();
+ const coordsBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);
gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);
gl.enableVertexAttribArray(cache.positionLocation);
gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
- var colorsBuffer = gl.createBuffer();
+ const colorsBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);
gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);
gl.enableVertexAttribArray(cache.colorLocation);
@@ -9230,12 +9509,12 @@ var WebGLUtils = function WebGLUtilsClosure() {
drawFigures,
cleanup() {
- if (smaskCache && smaskCache.canvas) {
+ if (smaskCache?.canvas) {
smaskCache.canvas.width = 0;
smaskCache.canvas.height = 0;
}
- if (figuresCache && figuresCache.canvas) {
+ if (figuresCache?.canvas) {
figuresCache.canvas.width = 0;
figuresCache.canvas.height = 0;
}
@@ -9249,14 +9528,13 @@ var WebGLUtils = function WebGLUtilsClosure() {
/***/ }),
/* 19 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.AnnotationLayer = void 0;
var _display_utils = __w_pdfjs_require__(1);
@@ -9265,6 +9543,8 @@ var _util = __w_pdfjs_require__(2);
var _annotation_storage = __w_pdfjs_require__(8);
+var _scripting_utils = __w_pdfjs_require__(20);
+
class AnnotationElementFactory {
static create(parameters) {
const subtype = parameters.data.annotationType;
@@ -9351,7 +9631,11 @@ class AnnotationElementFactory {
}
class AnnotationElement {
- constructor(parameters, isRenderable = false, ignoreBorder = false) {
+ constructor(parameters, {
+ isRenderable = false,
+ ignoreBorder = false,
+ createQuadrilaterals = false
+ } = {}) {
this.isRenderable = isRenderable;
this.data = parameters.data;
this.layer = parameters.layer;
@@ -9363,10 +9647,17 @@ class AnnotationElement {
this.renderInteractiveForms = parameters.renderInteractiveForms;
this.svgFactory = parameters.svgFactory;
this.annotationStorage = parameters.annotationStorage;
+ this.enableScripting = parameters.enableScripting;
+ this.hasJSActions = parameters.hasJSActions;
+ this._mouseState = parameters.mouseState;
if (isRenderable) {
this.container = this._createContainer(ignoreBorder);
}
+
+ if (createQuadrilaterals) {
+ this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);
+ }
}
_createContainer(ignoreBorder = false) {
@@ -9381,7 +9672,7 @@ class AnnotationElement {
const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);
container.style.transform = `matrix(${viewport.transform.join(",")})`;
- container.style.transformOrigin = `-${rect[0]}px -${rect[1]}px`;
+ container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`;
if (!ignoreBorder && data.borderStyle.width > 0) {
container.style.borderWidth = `${data.borderStyle.width}px`;
@@ -9425,7 +9716,7 @@ class AnnotationElement {
}
if (data.color) {
- container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);
+ container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);
} else {
container.style.borderWidth = 0;
}
@@ -9438,7 +9729,31 @@ class AnnotationElement {
return container;
}
- _createPopup(container, trigger, data) {
+ _createQuadrilaterals(ignoreBorder = false) {
+ if (!this.data.quadPoints) {
+ return null;
+ }
+
+ const quadrilaterals = [];
+ const savedRect = this.data.rect;
+
+ for (const quadPoint of this.data.quadPoints) {
+ this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y];
+ quadrilaterals.push(this._createContainer(ignoreBorder));
+ }
+
+ this.data.rect = savedRect;
+ return quadrilaterals;
+ }
+
+ _createPopup(trigger, data) {
+ let container = this.container;
+
+ if (this.quadrilaterals) {
+ trigger = trigger || this.quadrilaterals;
+ container = this.quadrilaterals[0];
+ }
+
if (!trigger) {
trigger = document.createElement("div");
trigger.style.height = container.style.height;
@@ -9460,6 +9775,13 @@ class AnnotationElement {
container.appendChild(popup);
}
+ _renderQuadrilaterals(className) {
+ this.quadrilaterals.forEach(quadrilateral => {
+ quadrilateral.className = className;
+ });
+ return this.quadrilaterals;
+ }
+
render() {
(0, _util.unreachable)("Abstract method `AnnotationElement.render` called");
}
@@ -9468,12 +9790,14 @@ class AnnotationElement {
class LinkAnnotationElement extends AnnotationElement {
constructor(parameters) {
- const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);
- super(parameters, isRenderable);
+ const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || parameters.data.isTooltipOnly || parameters.data.actions && (parameters.data.actions.Action || parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse Down"]));
+ super(parameters, {
+ isRenderable,
+ createQuadrilaterals: true
+ });
}
render() {
- this.container.className = "linkAnnotation";
const {
data,
linkService
@@ -9489,10 +9813,23 @@ class LinkAnnotationElement extends AnnotationElement {
});
} else if (data.action) {
this._bindNamedAction(link, data.action);
- } else {
+ } else if (data.dest) {
this._bindLink(link, data.dest);
+ } else if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) {
+ this._bindJSAction(link, data);
+ } else {
+ this._bindLink(link, "");
+ }
+
+ if (this.quadrilaterals) {
+ return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => {
+ const linkElement = index === 0 ? link : link.cloneNode();
+ quadrilateral.appendChild(linkElement);
+ return quadrilateral;
+ });
}
+ this.container.className = "linkAnnotation";
this.container.appendChild(link);
return this.container;
}
@@ -9502,13 +9839,13 @@ class LinkAnnotationElement extends AnnotationElement {
link.onclick = () => {
if (destination) {
- this.linkService.navigateTo(destination);
+ this.linkService.goToDestination(destination);
}
return false;
};
- if (destination) {
+ if (destination || destination === "") {
link.className = "internalLink";
}
}
@@ -9524,12 +9861,40 @@ class LinkAnnotationElement extends AnnotationElement {
link.className = "internalLink";
}
+ _bindJSAction(link, data) {
+ link.href = this.linkService.getAnchorUrl("");
+ const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]);
+
+ for (const name of Object.keys(data.actions)) {
+ const jsName = map.get(name);
+
+ if (!jsName) {
+ continue;
+ }
+
+ link[jsName] = () => {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id: data.id,
+ name
+ }
+ });
+ return false;
+ };
+ }
+
+ link.className = "internalLink";
+ }
+
}
class TextAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable);
+ super(parameters, {
+ isRenderable
+ });
}
render() {
@@ -9545,7 +9910,7 @@ class TextAnnotationElement extends AnnotationElement {
});
if (!this.data.hasPopup) {
- this._createPopup(this.container, image, this.data);
+ this._createPopup(image, this.data);
}
this.container.appendChild(image);
@@ -9556,26 +9921,79 @@ class TextAnnotationElement extends AnnotationElement {
class WidgetAnnotationElement extends AnnotationElement {
render() {
+ if (this.data.alternativeText) {
+ this.container.title = this.data.alternativeText;
+ }
+
return this.container;
}
+ _getKeyModifier(event) {
+ return navigator.platform.includes("Win") && event.ctrlKey || navigator.platform.includes("Mac") && event.metaKey;
+ }
+
+ _setEventListener(element, baseName, eventName, valueGetter) {
+ if (baseName.includes("mouse")) {
+ element.addEventListener(baseName, event => {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id: this.data.id,
+ name: eventName,
+ value: valueGetter(event),
+ shift: event.shiftKey,
+ modifier: this._getKeyModifier(event)
+ }
+ });
+ });
+ } else {
+ element.addEventListener(baseName, event => {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id: this.data.id,
+ name: eventName,
+ value: event.target.checked
+ }
+ });
+ });
+ }
+ }
+
+ _setEventListeners(element, names, getter) {
+ for (const [baseName, eventName] of names) {
+ if (eventName === "Action" || this.data.actions?.[eventName]) {
+ this._setEventListener(element, baseName, eventName, getter);
+ }
+ }
+ }
+
}
class TextWidgetAnnotationElement extends WidgetAnnotationElement {
constructor(parameters) {
const isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;
- super(parameters, isRenderable);
+ super(parameters, {
+ isRenderable
+ });
}
render() {
- const TEXT_ALIGNMENT = ["left", "center", "right"];
const storage = this.annotationStorage;
const id = this.data.id;
this.container.className = "textWidgetAnnotation";
let element = null;
if (this.renderInteractiveForms) {
- const textContent = storage.getOrCreateValue(id, this.data.fieldValue);
+ const textContent = storage.getOrCreateValue(id, {
+ value: this.data.fieldValue
+ }).value;
+ const elementData = {
+ userValue: null,
+ formattedValue: null,
+ beforeInputSelectionRange: null,
+ beforeInputValue: null
+ };
if (this.data.multiLine) {
element = document.createElement("textarea");
@@ -9586,9 +10004,192 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
element.setAttribute("value", textContent);
}
+ elementData.userValue = textContent;
+ element.setAttribute("id", id);
element.addEventListener("input", function (event) {
- storage.setValue(id, event.target.value);
+ storage.setValue(id, {
+ value: event.target.value
+ });
});
+
+ let blurListener = event => {
+ if (elementData.formattedValue) {
+ event.target.value = elementData.formattedValue;
+ }
+
+ event.target.setSelectionRange(0, 0);
+ elementData.beforeInputSelectionRange = null;
+ };
+
+ if (this.enableScripting && this.hasJSActions) {
+ element.addEventListener("focus", event => {
+ if (elementData.userValue) {
+ event.target.value = elementData.userValue;
+ }
+ });
+ element.addEventListener("updatefromsandbox", function (event) {
+ const {
+ detail
+ } = event;
+ const actions = {
+ value() {
+ elementData.userValue = detail.value || "";
+ storage.setValue(id, {
+ value: elementData.userValue.toString()
+ });
+
+ if (!elementData.formattedValue) {
+ event.target.value = elementData.userValue;
+ }
+ },
+
+ valueAsString() {
+ elementData.formattedValue = detail.valueAsString || "";
+
+ if (event.target !== document.activeElement) {
+ event.target.value = elementData.formattedValue;
+ }
+
+ storage.setValue(id, {
+ formattedValue: elementData.formattedValue
+ });
+ },
+
+ focus() {
+ setTimeout(() => event.target.focus({
+ preventScroll: false
+ }), 0);
+ },
+
+ userName() {
+ event.target.title = detail.userName;
+ },
+
+ hidden() {
+ event.target.style.visibility = detail.hidden ? "hidden" : "visible";
+ storage.setValue(id, {
+ hidden: detail.hidden
+ });
+ },
+
+ editable() {
+ event.target.disabled = !detail.editable;
+ },
+
+ selRange() {
+ const [selStart, selEnd] = detail.selRange;
+
+ if (selStart >= 0 && selEnd < event.target.value.length) {
+ event.target.setSelectionRange(selStart, selEnd);
+ }
+ },
+
+ strokeColor() {
+ const color = detail.strokeColor;
+ event.target.style.color = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));
+ }
+
+ };
+ Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
+ });
+
+ if (this.data.actions) {
+ element.addEventListener("keydown", event => {
+ elementData.beforeInputValue = event.target.value;
+ let commitKey = -1;
+
+ if (event.key === "Escape") {
+ commitKey = 0;
+ } else if (event.key === "Enter") {
+ commitKey = 2;
+ } else if (event.key === "Tab") {
+ commitKey = 3;
+ }
+
+ if (commitKey === -1) {
+ return;
+ }
+
+ elementData.userValue = event.target.value;
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value: event.target.value,
+ willCommit: true,
+ commitKey,
+ selStart: event.target.selectionStart,
+ selEnd: event.target.selectionEnd
+ }
+ });
+ });
+ const _blurListener = blurListener;
+ blurListener = null;
+ element.addEventListener("blur", event => {
+ if (this._mouseState.isDown) {
+ elementData.userValue = event.target.value;
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value: event.target.value,
+ willCommit: true,
+ commitKey: 1,
+ selStart: event.target.selectionStart,
+ selEnd: event.target.selectionEnd
+ }
+ });
+ }
+
+ _blurListener(event);
+ });
+ element.addEventListener("mousedown", event => {
+ elementData.beforeInputValue = event.target.value;
+ elementData.beforeInputSelectionRange = null;
+ });
+ element.addEventListener("keyup", event => {
+ if (event.target.selectionStart === event.target.selectionEnd) {
+ elementData.beforeInputSelectionRange = null;
+ }
+ });
+ element.addEventListener("select", event => {
+ elementData.beforeInputSelectionRange = [event.target.selectionStart, event.target.selectionEnd];
+ });
+
+ if ("Keystroke" in this.data.actions) {
+ element.addEventListener("input", event => {
+ let selStart = -1;
+ let selEnd = -1;
+
+ if (elementData.beforeInputSelectionRange) {
+ [selStart, selEnd] = elementData.beforeInputSelectionRange;
+ }
+
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value: elementData.beforeInputValue,
+ change: event.data,
+ willCommit: false,
+ selStart,
+ selEnd
+ }
+ });
+ });
+ }
+
+ this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value);
+ }
+ }
+
+ if (blurListener) {
+ element.addEventListener("blur", blurListener);
+ }
+
element.disabled = this.data.readOnly;
element.name = this.data.fieldName;
@@ -9607,59 +10208,49 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
element.textContent = this.data.fieldValue;
element.style.verticalAlign = "middle";
element.style.display = "table-cell";
- let font = null;
-
- if (this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName)) {
- font = this.page.commonObjs.get(this.data.fontRefName);
- }
-
- this._setTextStyle(element, font);
}
- if (this.data.textAlignment !== null) {
- element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
- }
+ this._setTextStyle(element);
this.container.appendChild(element);
return this.container;
}
- _setTextStyle(element, font) {
+ _setTextStyle(element) {
+ const TEXT_ALIGNMENT = ["left", "center", "right"];
+ const {
+ fontSize,
+ fontColor
+ } = this.data.defaultAppearanceData;
const style = element.style;
- style.fontSize = `${this.data.fontSize}px`;
- style.direction = this.data.fontDirection < 0 ? "rtl" : "ltr";
- if (!font) {
- return;
+ if (fontSize) {
+ style.fontSize = `${fontSize}px`;
}
- let bold = "normal";
+ style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);
- if (font.black) {
- bold = "900";
- } else if (font.bold) {
- bold = "bold";
+ if (this.data.textAlignment !== null) {
+ style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
}
-
- style.fontWeight = bold;
- style.fontStyle = font.italic ? "italic" : "normal";
- const fontFamily = font.loadedName ? `"${font.loadedName}", ` : "";
- const fallbackName = font.fallbackName || "Helvetica, sans-serif";
- style.fontFamily = fontFamily + fallbackName;
}
}
class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
constructor(parameters) {
- super(parameters, parameters.renderInteractiveForms);
+ super(parameters, {
+ isRenderable: parameters.renderInteractiveForms
+ });
}
render() {
const storage = this.annotationStorage;
const data = this.data;
const id = data.id;
- const value = storage.getOrCreateValue(id, data.fieldValue && data.fieldValue !== "Off");
+ const value = storage.getOrCreateValue(id, {
+ value: data.fieldValue && data.fieldValue !== "Off"
+ }).value;
this.container.className = "buttonWidgetAnnotation checkBox";
const element = document.createElement("input");
element.disabled = data.readOnly;
@@ -9670,9 +10261,61 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
element.setAttribute("checked", true);
}
+ element.setAttribute("id", id);
element.addEventListener("change", function (event) {
- storage.setValue(id, event.target.checked);
+ const name = event.target.name;
+
+ for (const checkbox of document.getElementsByName(name)) {
+ if (checkbox !== event.target) {
+ checkbox.checked = false;
+ storage.setValue(checkbox.parentNode.getAttribute("data-annotation-id"), {
+ value: false
+ });
+ }
+ }
+
+ storage.setValue(id, {
+ value: event.target.checked
+ });
});
+
+ if (this.enableScripting && this.hasJSActions) {
+ element.addEventListener("updatefromsandbox", event => {
+ const {
+ detail
+ } = event;
+ const actions = {
+ value() {
+ event.target.checked = detail.value !== "Off";
+ storage.setValue(id, {
+ value: event.target.checked
+ });
+ },
+
+ focus() {
+ setTimeout(() => event.target.focus({
+ preventScroll: false
+ }), 0);
+ },
+
+ hidden() {
+ event.target.style.visibility = detail.hidden ? "hidden" : "visible";
+ storage.setValue(id, {
+ hidden: detail.hidden
+ });
+ },
+
+ editable() {
+ event.target.disabled = !detail.editable;
+ }
+
+ };
+ Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
+ });
+
+ this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked);
+ }
+
this.container.appendChild(element);
return this.container;
}
@@ -9681,7 +10324,9 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
constructor(parameters) {
- super(parameters, parameters.renderInteractiveForms);
+ super(parameters, {
+ isRenderable: parameters.renderInteractiveForms
+ });
}
render() {
@@ -9689,7 +10334,9 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
const storage = this.annotationStorage;
const data = this.data;
const id = data.id;
- const value = storage.getOrCreateValue(id, data.fieldValue === data.buttonValue);
+ const value = storage.getOrCreateValue(id, {
+ value: data.fieldValue === data.buttonValue
+ }).value;
const element = document.createElement("input");
element.disabled = data.readOnly;
element.type = "radio";
@@ -9699,17 +10346,75 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
element.setAttribute("checked", true);
}
+ element.setAttribute("pdfButtonValue", data.buttonValue);
+ element.setAttribute("id", id);
element.addEventListener("change", function (event) {
- const name = event.target.name;
+ const {
+ target
+ } = event;
- for (const radio of document.getElementsByName(name)) {
- if (radio !== event.target) {
- storage.setValue(radio.parentNode.getAttribute("data-annotation-id"), false);
+ for (const radio of document.getElementsByName(target.name)) {
+ if (radio !== target) {
+ storage.setValue(radio.getAttribute("id"), {
+ value: false
+ });
}
}
- storage.setValue(id, event.target.checked);
+ storage.setValue(id, {
+ value: target.checked
+ });
});
+
+ if (this.enableScripting && this.hasJSActions) {
+ element.addEventListener("updatefromsandbox", event => {
+ const {
+ detail
+ } = event;
+ const actions = {
+ value() {
+ const fieldValue = detail.value;
+
+ for (const radio of document.getElementsByName(event.target.name)) {
+ const radioId = radio.getAttribute("id");
+
+ if (fieldValue === radio.getAttribute("pdfButtonValue")) {
+ radio.setAttribute("checked", true);
+ storage.setValue(radioId, {
+ value: true
+ });
+ } else {
+ storage.setValue(radioId, {
+ value: false
+ });
+ }
+ }
+ },
+
+ focus() {
+ setTimeout(() => event.target.focus({
+ preventScroll: false
+ }), 0);
+ },
+
+ hidden() {
+ event.target.style.visibility = detail.hidden ? "hidden" : "visible";
+ storage.setValue(id, {
+ hidden: detail.hidden
+ });
+ },
+
+ editable() {
+ event.target.disabled = !detail.editable;
+ }
+
+ };
+ Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
+ });
+
+ this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked);
+ }
+
this.container.appendChild(element);
return this.container;
}
@@ -9720,6 +10425,11 @@ class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
render() {
const container = super.render();
container.className = "buttonWidgetAnnotation pushButton";
+
+ if (this.data.alternativeText) {
+ container.title = this.data.alternativeText;
+ }
+
return container;
}
@@ -9727,17 +10437,22 @@ class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
constructor(parameters) {
- super(parameters, parameters.renderInteractiveForms);
+ super(parameters, {
+ isRenderable: parameters.renderInteractiveForms
+ });
}
render() {
this.container.className = "choiceWidgetAnnotation";
const storage = this.annotationStorage;
const id = this.data.id;
- storage.getOrCreateValue(id, this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null);
+ storage.getOrCreateValue(id, {
+ value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined
+ });
const selectElement = document.createElement("select");
selectElement.disabled = this.data.readOnly;
selectElement.name = this.data.fieldName;
+ selectElement.setAttribute("id", id);
if (!this.data.combo) {
selectElement.size = this.data.options.length;
@@ -9759,11 +10474,77 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
selectElement.appendChild(optionElement);
}
- selectElement.addEventListener("input", function (event) {
+ function getValue(event) {
const options = event.target.options;
- const value = options[options.selectedIndex].value;
- storage.setValue(id, value);
- });
+ return options[options.selectedIndex].value;
+ }
+
+ if (this.enableScripting && this.hasJSActions) {
+ selectElement.addEventListener("updatefromsandbox", event => {
+ const {
+ detail
+ } = event;
+ const actions = {
+ value() {
+ const options = event.target.options;
+ const value = detail.value;
+ const i = options.indexOf(value);
+
+ if (i !== -1) {
+ options.selectedIndex = i;
+ storage.setValue(id, {
+ value
+ });
+ }
+ },
+
+ focus() {
+ setTimeout(() => event.target.focus({
+ preventScroll: false
+ }), 0);
+ },
+
+ hidden() {
+ event.target.style.visibility = detail.hidden ? "hidden" : "visible";
+ storage.setValue(id, {
+ hidden: detail.hidden
+ });
+ },
+
+ editable() {
+ event.target.disabled = !detail.editable;
+ }
+
+ };
+ Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
+ });
+ selectElement.addEventListener("input", event => {
+ const value = getValue(event);
+ storage.setValue(id, {
+ value
+ });
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ changeEx: value,
+ willCommit: true,
+ commitKey: 1,
+ keyDown: false
+ }
+ });
+ });
+
+ this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked);
+ } else {
+ selectElement.addEventListener("input", function (event) {
+ storage.setValue(id, {
+ value: getValue(event)
+ });
+ });
+ }
+
this.container.appendChild(selectElement);
return this.container;
}
@@ -9773,7 +10554,9 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
class PopupAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable);
+ super(parameters, {
+ isRenderable
+ });
}
render() {
@@ -9785,24 +10568,29 @@ class PopupAnnotationElement extends AnnotationElement {
}
const selector = `[data-annotation-id="${this.data.parentId}"]`;
- const parentElement = this.layer.querySelector(selector);
+ const parentElements = this.layer.querySelectorAll(selector);
- if (!parentElement) {
+ if (parentElements.length === 0) {
return this.container;
}
const popup = new PopupElement({
container: this.container,
- trigger: parentElement,
+ trigger: Array.from(parentElements),
color: this.data.color,
title: this.data.title,
modificationDate: this.data.modificationDate,
contents: this.data.contents
});
- const parentLeft = parseFloat(parentElement.style.left);
- const parentWidth = parseFloat(parentElement.style.width);
- this.container.style.transformOrigin = `-${parentLeft + parentWidth}px -${parentElement.style.top}`;
- this.container.style.left = `${parentLeft + parentWidth}px`;
+ const page = this.page;
+
+ const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]);
+
+ const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0];
+ const popupTop = rect[1];
+ this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`;
+ this.container.style.left = `${popupLeft}px`;
+ this.container.style.top = `${popupTop}px`;
this.container.appendChild(popup.render());
return this.container;
}
@@ -9835,7 +10623,7 @@ class PopupElement {
const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];
const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];
const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];
- popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);
+ popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0);
}
const title = document.createElement("h1");
@@ -9858,9 +10646,16 @@ class PopupElement {
const contents = this._formatContents(this.contents);
popup.appendChild(contents);
- this.trigger.addEventListener("click", this._toggle.bind(this));
- this.trigger.addEventListener("mouseover", this._show.bind(this, false));
- this.trigger.addEventListener("mouseout", this._hide.bind(this, false));
+
+ if (!Array.isArray(this.trigger)) {
+ this.trigger = [this.trigger];
+ }
+
+ this.trigger.forEach(element => {
+ element.addEventListener("click", this._toggle.bind(this));
+ element.addEventListener("mouseover", this._show.bind(this, false));
+ element.addEventListener("mouseout", this._hide.bind(this, false));
+ });
popup.addEventListener("click", this._hide.bind(this, true));
wrapper.appendChild(popup);
return wrapper;
@@ -9917,14 +10712,17 @@ class PopupElement {
class FreeTextAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
}
render() {
this.container.className = "freeTextAnnotation";
if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
+ this._createPopup(null, this.data);
}
return this.container;
@@ -9935,7 +10733,10 @@ class FreeTextAnnotationElement extends AnnotationElement {
class LineAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
}
render() {
@@ -9954,7 +10755,7 @@ class LineAnnotationElement extends AnnotationElement {
svg.appendChild(line);
this.container.append(svg);
- this._createPopup(this.container, line, data);
+ this._createPopup(line, data);
return this.container;
}
@@ -9964,7 +10765,10 @@ class LineAnnotationElement extends AnnotationElement {
class SquareAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
}
render() {
@@ -9985,7 +10789,7 @@ class SquareAnnotationElement extends AnnotationElement {
svg.appendChild(square);
this.container.append(svg);
- this._createPopup(this.container, square, data);
+ this._createPopup(square, data);
return this.container;
}
@@ -9995,7 +10799,10 @@ class SquareAnnotationElement extends AnnotationElement {
class CircleAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
}
render() {
@@ -10016,7 +10823,7 @@ class CircleAnnotationElement extends AnnotationElement {
svg.appendChild(circle);
this.container.append(svg);
- this._createPopup(this.container, circle, data);
+ this._createPopup(circle, data);
return this.container;
}
@@ -10026,7 +10833,10 @@ class CircleAnnotationElement extends AnnotationElement {
class PolylineAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
this.containerClassName = "polylineAnnotation";
this.svgElementName = "svg:polyline";
}
@@ -10054,7 +10864,7 @@ class PolylineAnnotationElement extends AnnotationElement {
svg.appendChild(polyline);
this.container.append(svg);
- this._createPopup(this.container, polyline, data);
+ this._createPopup(polyline, data);
return this.container;
}
@@ -10073,14 +10883,17 @@ class PolygonAnnotationElement extends PolylineAnnotationElement {
class CaretAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
}
render() {
this.container.className = "caretAnnotation";
if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
+ this._createPopup(null, this.data);
}
return this.container;
@@ -10091,7 +10904,10 @@ class CaretAnnotationElement extends AnnotationElement {
class InkAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
this.containerClassName = "inkAnnotation";
this.svgElementName = "svg:polyline";
}
@@ -10119,7 +10935,7 @@ class InkAnnotationElement extends AnnotationElement {
polyline.setAttribute("stroke", "transparent");
polyline.setAttribute("fill", "none");
- this._createPopup(this.container, polyline, data);
+ this._createPopup(polyline, data);
svg.appendChild(polyline);
}
@@ -10133,16 +10949,23 @@ class InkAnnotationElement extends AnnotationElement {
class HighlightAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
}
render() {
- this.container.className = "highlightAnnotation";
-
if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
+ this._createPopup(null, this.data);
}
+ if (this.quadrilaterals) {
+ return this._renderQuadrilaterals("highlightAnnotation");
+ }
+
+ this.container.className = "highlightAnnotation";
return this.container;
}
@@ -10151,16 +10974,23 @@ class HighlightAnnotationElement extends AnnotationElement {
class UnderlineAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
}
render() {
- this.container.className = "underlineAnnotation";
-
if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
+ this._createPopup(null, this.data);
+ }
+
+ if (this.quadrilaterals) {
+ return this._renderQuadrilaterals("underlineAnnotation");
}
+ this.container.className = "underlineAnnotation";
return this.container;
}
@@ -10169,16 +10999,23 @@ class UnderlineAnnotationElement extends AnnotationElement {
class SquigglyAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
}
render() {
- this.container.className = "squigglyAnnotation";
-
if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
+ this._createPopup(null, this.data);
}
+ if (this.quadrilaterals) {
+ return this._renderQuadrilaterals("squigglyAnnotation");
+ }
+
+ this.container.className = "squigglyAnnotation";
return this.container;
}
@@ -10187,16 +11024,23 @@ class SquigglyAnnotationElement extends AnnotationElement {
class StrikeOutAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
}
render() {
- this.container.className = "strikeoutAnnotation";
-
if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
+ this._createPopup(null, this.data);
+ }
+
+ if (this.quadrilaterals) {
+ return this._renderQuadrilaterals("strikeoutAnnotation");
}
+ this.container.className = "strikeoutAnnotation";
return this.container;
}
@@ -10205,14 +11049,17 @@ class StrikeOutAnnotationElement extends AnnotationElement {
class StampAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
}
render() {
this.container.className = "stampAnnotation";
if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
+ this._createPopup(null, this.data);
}
return this.container;
@@ -10222,22 +11069,21 @@ class StampAnnotationElement extends AnnotationElement {
class FileAttachmentAnnotationElement extends AnnotationElement {
constructor(parameters) {
- super(parameters, true);
+ super(parameters, {
+ isRenderable: true
+ });
const {
filename,
content
} = this.data.file;
this.filename = (0, _display_utils.getFilenameFromUrl)(filename);
this.content = content;
-
- if (this.linkService.eventBus) {
- this.linkService.eventBus.dispatch("fileattachmentannotation", {
- source: this,
- id: (0, _util.stringToPDFString)(filename),
- filename,
- content
- });
- }
+ this.linkService.eventBus?.dispatch("fileattachmentannotation", {
+ source: this,
+ id: (0, _util.stringToPDFString)(filename),
+ filename,
+ content
+ });
}
render() {
@@ -10248,7 +11094,7 @@ class FileAttachmentAnnotationElement extends AnnotationElement {
trigger.addEventListener("dblclick", this._download.bind(this));
if (!this.data.hasPopup && (this.data.title || this.data.contents)) {
- this._createPopup(this.container, trigger, this.data);
+ this._createPopup(trigger, this.data);
}
this.container.appendChild(trigger);
@@ -10299,21 +11145,46 @@ class AnnotationLayer {
imageResourcesPath: parameters.imageResourcesPath || "",
renderInteractiveForms: typeof parameters.renderInteractiveForms === "boolean" ? parameters.renderInteractiveForms : true,
svgFactory: new _display_utils.DOMSVGFactory(),
- annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage()
+ annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(),
+ enableScripting: parameters.enableScripting,
+ hasJSActions: parameters.hasJSActions,
+ mouseState: parameters.mouseState || {
+ isDown: false
+ }
});
if (element.isRenderable) {
- parameters.div.appendChild(element.render());
+ const rendered = element.render();
+
+ if (data.hidden) {
+ rendered.style.visibility = "hidden";
+ }
+
+ if (Array.isArray(rendered)) {
+ for (const renderedElement of rendered) {
+ parameters.div.appendChild(renderedElement);
+ }
+ } else {
+ if (element instanceof PopupAnnotationElement) {
+ parameters.div.prepend(rendered);
+ } else {
+ parameters.div.appendChild(rendered);
+ }
+ }
}
}
}
static update(parameters) {
+ const transform = `matrix(${parameters.viewport.transform.join(",")})`;
+
for (const data of parameters.annotations) {
- const element = parameters.div.querySelector(`[data-annotation-id="${data.id}"]`);
+ const elements = parameters.div.querySelectorAll(`[data-annotation-id="${data.id}"]`);
- if (element) {
- element.style.transform = `matrix(${parameters.viewport.transform.join(",")})`;
+ if (elements) {
+ elements.forEach(element => {
+ element.style.transform = transform;
+ });
}
}
@@ -10326,29 +11197,96 @@ exports.AnnotationLayer = AnnotationLayer;
/***/ }),
/* 20 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
+exports.ColorConverters = void 0;
+
+function makeColorComp(n) {
+ return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");
+}
+
+class ColorConverters {
+ static CMYK_G([c, y, m, k]) {
+ return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];
+ }
+
+ static G_CMYK([g]) {
+ return ["CMYK", 0, 0, 0, 1 - g];
+ }
+
+ static G_RGB([g]) {
+ return ["RGB", g, g, g];
+ }
+
+ static G_HTML([g]) {
+ const G = makeColorComp(g);
+ return `#${G}${G}${G}`;
+ }
+
+ static RGB_G([r, g, b]) {
+ return ["G", 0.3 * r + 0.59 * g + 0.11 * b];
+ }
+
+ static RGB_HTML([r, g, b]) {
+ const R = makeColorComp(r);
+ const G = makeColorComp(g);
+ const B = makeColorComp(b);
+ return `#${R}${G}${B}`;
+ }
+
+ static T_HTML() {
+ return "#00000000";
+ }
+
+ static CMYK_RGB([c, y, m, k]) {
+ return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];
+ }
+
+ static CMYK_HTML(components) {
+ return this.RGB_HTML(this.CMYK_RGB(components));
+ }
+
+ static RGB_CMYK([r, g, b]) {
+ const c = 1 - r;
+ const m = 1 - g;
+ const y = 1 - b;
+ const k = Math.min(c, m, y);
+ return ["CMYK", c, m, y, k];
+ }
+
+}
+
+exports.ColorConverters = ColorConverters;
+
+/***/ }),
+/* 21 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
exports.renderTextLayer = void 0;
var _util = __w_pdfjs_require__(2);
-var renderTextLayer = function renderTextLayerClosure() {
- var MAX_TEXT_DIVS_TO_RENDER = 100000;
- var NonWhitespaceRegexp = /\S/;
+const renderTextLayer = function renderTextLayerClosure() {
+ const MAX_TEXT_DIVS_TO_RENDER = 100000;
+ const NonWhitespaceRegexp = /\S/;
function isAllWhitespace(str) {
return !NonWhitespaceRegexp.test(str);
}
function appendText(task, geom, styles) {
- var textDiv = document.createElement("span");
- var textDivProperties = {
+ const textDiv = document.createElement("span");
+ const textDivProperties = {
angle: 0,
canvasWidth: 0,
isWhitespace: false,
@@ -10370,17 +11308,17 @@ var renderTextLayer = function renderTextLayerClosure() {
return;
}
- var tx = _util.Util.transform(task._viewport.transform, geom.transform);
+ const tx = _util.Util.transform(task._viewport.transform, geom.transform);
- var angle = Math.atan2(tx[1], tx[0]);
- var style = styles[geom.fontName];
+ let angle = Math.atan2(tx[1], tx[0]);
+ const style = styles[geom.fontName];
if (style.vertical) {
angle += Math.PI / 2;
}
- var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
- var fontAscent = fontHeight;
+ const fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
+ let fontAscent = fontHeight;
if (style.ascent) {
fontAscent = style.ascent * fontAscent;
@@ -10440,7 +11378,7 @@ var renderTextLayer = function renderTextLayerClosure() {
}
if (task._enhanceTextSelection) {
- var angleCos = 1,
+ let angleCos = 1,
angleSin = 0;
if (angle !== 0) {
@@ -10448,9 +11386,9 @@ var renderTextLayer = function renderTextLayerClosure() {
angleSin = Math.sin(angle);
}
- var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
- var divHeight = fontHeight;
- var m, b;
+ const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
+ const divHeight = fontHeight;
+ let m, b;
if (angle !== 0) {
m = [angleCos, angleSin, -angleSin, angleCos, left, top];
@@ -10476,9 +11414,9 @@ var renderTextLayer = function renderTextLayerClosure() {
return;
}
- var textDivs = task._textDivs;
- var capability = task._capability;
- var textDivsLength = textDivs.length;
+ const textDivs = task._textDivs;
+ const capability = task._capability;
+ const textDivsLength = textDivs.length;
if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
task._renderingDone = true;
@@ -10487,7 +11425,7 @@ var renderTextLayer = function renderTextLayerClosure() {
}
if (!task._textContentStream) {
- for (var i = 0; i < textDivsLength; i++) {
+ for (let i = 0; i < textDivsLength; i++) {
task._layoutText(textDivs[i]);
}
}
@@ -10511,14 +11449,14 @@ var renderTextLayer = function renderTextLayerClosure() {
}
function expand(task) {
- var bounds = task._bounds;
- var viewport = task._viewport;
- var expanded = expandBounds(viewport.width, viewport.height, bounds);
+ const bounds = task._bounds;
+ const viewport = task._viewport;
+ const expanded = expandBounds(viewport.width, viewport.height, bounds);
- for (var i = 0; i < expanded.length; i++) {
- var div = bounds[i].div;
+ for (let i = 0; i < expanded.length; i++) {
+ const div = bounds[i].div;
- var divProperties = task._textDivProperties.get(div);
+ const divProperties = task._textDivProperties.get(div);
if (divProperties.angle === 0) {
divProperties.paddingLeft = bounds[i].left - expanded[i].left;
@@ -10531,15 +11469,15 @@ var renderTextLayer = function renderTextLayerClosure() {
continue;
}
- var e = expanded[i],
- b = bounds[i];
- var m = b.m,
- c = m[0],
- s = m[1];
- var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];
- var ts = new Float64Array(64);
+ const e = expanded[i],
+ b = bounds[i];
+ const m = b.m,
+ c = m[0],
+ s = m[1];
+ const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];
+ const ts = new Float64Array(64);
points.forEach(function (p, j) {
- var t = _util.Util.applyTransform(p, m);
+ const t = _util.Util.applyTransform(p, m);
ts[j + 0] = c && (e.left - t[0]) / c;
ts[j + 4] = s && (e.top - t[1]) / s;
@@ -10558,7 +11496,7 @@ var renderTextLayer = function renderTextLayerClosure() {
ts[j + 56] = s && (e.right - t[0]) / s;
ts[j + 60] = c && (e.bottom - t[1]) / -c;
});
- var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
+ const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;
divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;
divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;
@@ -10569,7 +11507,7 @@ var renderTextLayer = function renderTextLayerClosure() {
}
function expandBounds(width, height, boxes) {
- var bounds = boxes.map(function (box, i) {
+ const bounds = boxes.map(function (box, i) {
return {
x1: box.left,
y1: box.top,
@@ -10581,9 +11519,9 @@ var renderTextLayer = function renderTextLayerClosure() {
};
});
expandBoundsLTR(width, bounds);
- var expanded = new Array(boxes.length);
+ const expanded = new Array(boxes.length);
bounds.forEach(function (b) {
- var i = b.index;
+ const i = b.index;
expanded[i] = {
left: b.x1New,
top: 0,
@@ -10592,8 +11530,8 @@ var renderTextLayer = function renderTextLayerClosure() {
};
});
boxes.map(function (box, i) {
- var e = expanded[i],
- b = bounds[i];
+ const e = expanded[i],
+ b = bounds[i];
b.x1 = box.top;
b.y1 = width - e.right;
b.x2 = box.bottom;
@@ -10604,7 +11542,7 @@ var renderTextLayer = function renderTextLayerClosure() {
});
expandBoundsLTR(height, bounds);
bounds.forEach(function (b) {
- var i = b.index;
+ const i = b.index;
expanded[i].top = b.x1New;
expanded[i].bottom = b.x2New;
});
@@ -10615,7 +11553,7 @@ var renderTextLayer = function renderTextLayerClosure() {
bounds.sort(function (a, b) {
return a.x1 - b.x1 || a.index - b.index;
});
- var fakeBoundary = {
+ const fakeBoundary = {
x1: -Infinity,
y1: -Infinity,
x2: 0,
@@ -10624,33 +11562,33 @@ var renderTextLayer = function renderTextLayerClosure() {
x1New: 0,
x2New: 0
};
- var horizon = [{
+ const horizon = [{
start: -Infinity,
end: Infinity,
boundary: fakeBoundary
}];
bounds.forEach(function (boundary) {
- var i = 0;
+ let i = 0;
while (i < horizon.length && horizon[i].end <= boundary.y1) {
i++;
}
- var j = horizon.length - 1;
+ let j = horizon.length - 1;
while (j >= 0 && horizon[j].start >= boundary.y2) {
j--;
}
- var horizonPart, affectedBoundary;
- var q,
+ let horizonPart, affectedBoundary;
+ let q,
k,
maxXNew = -Infinity;
for (q = i; q <= j; q++) {
horizonPart = horizon[q];
affectedBoundary = horizonPart.boundary;
- var xNew;
+ let xNew;
if (affectedBoundary.x2 > boundary.x1) {
xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;
@@ -10684,13 +11622,13 @@ var renderTextLayer = function renderTextLayerClosure() {
}
}
- var changedHorizon = [],
- lastBoundary = null;
+ const changedHorizon = [];
+ let lastBoundary = null;
for (q = i; q <= j; q++) {
horizonPart = horizon[q];
affectedBoundary = horizonPart.boundary;
- var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
+ const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
if (lastBoundary === useBoundary) {
changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
@@ -10730,7 +11668,7 @@ var renderTextLayer = function renderTextLayerClosure() {
continue;
}
- var used = false;
+ let used = false;
for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {
used = horizon[k].boundary === affectedBoundary;
@@ -10752,7 +11690,7 @@ var renderTextLayer = function renderTextLayerClosure() {
Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));
});
horizon.forEach(function (horizonPart) {
- var affectedBoundary = horizonPart.boundary;
+ const affectedBoundary = horizonPart.boundary;
if (affectedBoundary.x2New === undefined) {
affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);
@@ -10777,7 +11715,7 @@ var renderTextLayer = function renderTextLayerClosure() {
this._textDivs = textDivs || [];
this._textContentItemsStr = textContentItemsStr || [];
this._enhanceTextSelection = !!enhanceTextSelection;
- this._fontInspectorEnabled = !!(globalThis.FontInspector && globalThis.FontInspector.enabled);
+ this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;
this._reader = null;
this._layoutTextLastFontSize = null;
this._layoutTextLastFontFamily = null;
@@ -10945,7 +11883,7 @@ var renderTextLayer = function renderTextLayerClosure() {
const transformBuf = [],
paddingBuf = [];
- for (var i = 0, ii = this._textDivs.length; i < ii; i++) {
+ for (let i = 0, ii = this._textDivs.length; i < ii; i++) {
const div = this._textDivs[i];
const divProps = this._textDivProperties.get(div);
@@ -11002,7 +11940,7 @@ var renderTextLayer = function renderTextLayerClosure() {
};
function renderTextLayer(renderParameters) {
- var task = new TextLayerRenderTask({
+ const task = new TextLayerRenderTask({
textContent: renderParameters.textContent,
textContentStream: renderParameters.textContentStream,
container: renderParameters.container,
@@ -11023,15 +11961,14 @@ var renderTextLayer = function renderTextLayerClosure() {
exports.renderTextLayer = renderTextLayer;
/***/ }),
-/* 21 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 22 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.SVGGraphics = void 0;
var _util = __w_pdfjs_require__(2);
@@ -11901,7 +12838,7 @@ exports.SVGGraphics = SVGGraphics;
this.embeddedFonts[fontObj.loadedName] = fontObj;
}
- current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
+ current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;
let bold = "normal";
if (fontObj.black) {
@@ -11932,7 +12869,7 @@ exports.SVGGraphics = SVGGraphics;
endText() {
const current = this.current;
- if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {
+ if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) {
current.element = current.txtElement;
this.clip("nonzero");
this.endPath();
@@ -11962,7 +12899,7 @@ exports.SVGGraphics = SVGGraphics;
}
setStrokeRGBColor(r, g, b) {
- this.current.strokeColor = _util.Util.makeCssRgb(r, g, b);
+ this.current.strokeColor = _util.Util.makeHexColor(r, g, b);
}
setFillAlpha(fillAlpha) {
@@ -11970,7 +12907,7 @@ exports.SVGGraphics = SVGGraphics;
}
setFillRGBColor(r, g, b) {
- this.current.fillColor = _util.Util.makeCssRgb(r, g, b);
+ this.current.fillColor = _util.Util.makeHexColor(r, g, b);
this.current.tspan = this.svgFactory.createElement("svg:tspan");
this.current.xcoords = [];
this.current.ycoords = [];
@@ -12058,7 +12995,7 @@ exports.SVGGraphics = SVGGraphics;
this.transformMatrix = matrix;
if (paintType === 2) {
- const cssColor = _util.Util.makeCssRgb(...color);
+ const cssColor = _util.Util.makeHexColor(...color);
this.current.fillColor = cssColor;
this.current.strokeColor = cssColor;
@@ -12549,20 +13486,19 @@ exports.SVGGraphics = SVGGraphics;
}
/***/ }),
-/* 22 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 23 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.PDFNodeStream = void 0;
var _util = __w_pdfjs_require__(2);
-var _network_utils = __w_pdfjs_require__(23);
+var _network_utils = __w_pdfjs_require__(24);
;
@@ -12606,7 +13542,7 @@ class PDFNodeStream {
}
get _progressiveDataLength() {
- return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
+ return this._fullRequestReader?._loaded ?? 0;
}
getFullReader() {
@@ -13018,15 +13954,14 @@ class PDFNodeStreamFsRangeReader extends BaseRangeReader {
}
/***/ }),
-/* 23 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 24 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.createResponseStatusError = createResponseStatusError;
exports.extractFilenameFromHeader = extractFilenameFromHeader;
exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;
@@ -13034,7 +13969,7 @@ exports.validateResponseStatus = validateResponseStatus;
var _util = __w_pdfjs_require__(2);
-var _content_disposition = __w_pdfjs_require__(24);
+var _content_disposition = __w_pdfjs_require__(25);
function validateRangeRequestCapabilities({
getResponseHeader,
@@ -13110,15 +14045,14 @@ function validateResponseStatus(status) {
}
/***/ }),
-/* 24 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 25 */
+/***/ ((__unused_webpack_module, exports) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;
function getFilenameFromContentDispositionHeader(contentDisposition) {
@@ -13298,20 +14232,19 @@ function getFilenameFromContentDispositionHeader(contentDisposition) {
}
/***/ }),
-/* 25 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 26 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.PDFNetworkStream = void 0;
var _util = __w_pdfjs_require__(2);
-var _network_utils = __w_pdfjs_require__(23);
+var _network_utils = __w_pdfjs_require__(24);
;
const OK_RESPONSE = 200;
@@ -13841,20 +14774,19 @@ class PDFNetworkStreamRangeRequestReader {
}
/***/ }),
-/* 26 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 27 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.PDFFetchStream = void 0;
var _util = __w_pdfjs_require__(2);
-var _network_utils = __w_pdfjs_require__(23);
+var _network_utils = __w_pdfjs_require__(24);
;
@@ -13862,7 +14794,7 @@ function createFetchOptions(headers, withCredentials, abortController) {
return {
method: "GET",
headers,
- signal: abortController && abortController.signal,
+ signal: abortController?.signal,
mode: "cors",
credentials: withCredentials ? "include" : "same-origin",
redirect: "follow"
@@ -13895,7 +14827,7 @@ class PDFFetchStream {
}
get _progressiveDataLength() {
- return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
+ return this._fullRequestReader?._loaded ?? 0;
}
getFullReader() {
@@ -14080,7 +15012,7 @@ class PDFFetchStreamRangeReader {
this._reader = response.body.getReader();
}).catch(reason => {
- if (reason && reason.name === "AbortError") {
+ if (reason?.name === "AbortError") {
return;
}
@@ -14135,6 +15067,37 @@ class PDFFetchStreamRangeReader {
}
/***/ })
-/******/ ]);
+/******/ ]);
+/************************************************************************/
+/******/ // The module cache
+/******/ var __webpack_module_cache__ = {};
+/******/
+/******/ // The require function
+/******/ function __w_pdfjs_require__(moduleId) {
+/******/ // Check if module is in cache
+/******/ if(__webpack_module_cache__[moduleId]) {
+/******/ return __webpack_module_cache__[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = __webpack_module_cache__[moduleId] = {
+/******/ // no module.id needed
+/******/ // no module.loaded needed
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/************************************************************************/
+/******/ // module exports must be returned from runtime so entry inlining is disabled
+/******/ // startup
+/******/ // Load entry module and return exports
+/******/ return __w_pdfjs_require__(0);
+/******/ })()
+;
});
//# sourceMappingURL=pdf.js.map \ No newline at end of file