util.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973
  1. /**
  2. * @licstart The following is the entire license notice for the
  3. * Javascript code in this page
  4. *
  5. * Copyright 2019 Mozilla Foundation
  6. *
  7. * Licensed under the Apache License, Version 2.0 (the "License");
  8. * you may not use this file except in compliance with the License.
  9. * You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing, software
  14. * distributed under the License is distributed on an "AS IS" BASIS,
  15. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16. * See the License for the specific language governing permissions and
  17. * limitations under the License.
  18. *
  19. * @licend The above is the entire license notice for the
  20. * Javascript code in this page
  21. */
  22. "use strict";
  23. Object.defineProperty(exports, "__esModule", {
  24. value: true
  25. });
  26. exports.arrayByteLength = arrayByteLength;
  27. exports.arraysToBytes = arraysToBytes;
  28. exports.assert = assert;
  29. exports.bytesToString = bytesToString;
  30. exports.createPromiseCapability = createPromiseCapability;
  31. exports.getVerbosityLevel = getVerbosityLevel;
  32. exports.info = info;
  33. exports.isArrayBuffer = isArrayBuffer;
  34. exports.isArrayEqual = isArrayEqual;
  35. exports.isBool = isBool;
  36. exports.isEmptyObj = isEmptyObj;
  37. exports.isNum = isNum;
  38. exports.isString = isString;
  39. exports.isSpace = isSpace;
  40. exports.isSameOrigin = isSameOrigin;
  41. exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
  42. exports.isLittleEndian = isLittleEndian;
  43. exports.isEvalSupported = isEvalSupported;
  44. exports.log2 = log2;
  45. exports.readInt8 = readInt8;
  46. exports.readUint16 = readUint16;
  47. exports.readUint32 = readUint32;
  48. exports.removeNullCharacters = removeNullCharacters;
  49. exports.setVerbosityLevel = setVerbosityLevel;
  50. exports.shadow = shadow;
  51. exports.string32 = string32;
  52. exports.stringToBytes = stringToBytes;
  53. exports.stringToPDFString = stringToPDFString;
  54. exports.stringToUTF8String = stringToUTF8String;
  55. exports.utf8StringToString = utf8StringToString;
  56. exports.warn = warn;
  57. exports.unreachable = unreachable;
  58. Object.defineProperty(exports, "ReadableStream", {
  59. enumerable: true,
  60. get: function () {
  61. return _streams_polyfill.ReadableStream;
  62. }
  63. });
  64. exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.NativeImageDecoding = 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;
  65. require("./compatibility");
  66. var _streams_polyfill = require("./streams_polyfill");
  67. function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
  68. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
  69. function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
  70. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  71. function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
  72. function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
  73. function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
  74. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
  75. function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
  76. var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
  77. exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
  78. var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
  79. exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
  80. var NativeImageDecoding = {
  81. NONE: 'none',
  82. DECODE: 'decode',
  83. DISPLAY: 'display'
  84. };
  85. exports.NativeImageDecoding = NativeImageDecoding;
  86. var PermissionFlag = {
  87. PRINT: 0x04,
  88. MODIFY_CONTENTS: 0x08,
  89. COPY: 0x10,
  90. MODIFY_ANNOTATIONS: 0x20,
  91. FILL_INTERACTIVE_FORMS: 0x100,
  92. COPY_FOR_ACCESSIBILITY: 0x200,
  93. ASSEMBLE: 0x400,
  94. PRINT_HIGH_QUALITY: 0x800
  95. };
  96. exports.PermissionFlag = PermissionFlag;
  97. var TextRenderingMode = {
  98. FILL: 0,
  99. STROKE: 1,
  100. FILL_STROKE: 2,
  101. INVISIBLE: 3,
  102. FILL_ADD_TO_PATH: 4,
  103. STROKE_ADD_TO_PATH: 5,
  104. FILL_STROKE_ADD_TO_PATH: 6,
  105. ADD_TO_PATH: 7,
  106. FILL_STROKE_MASK: 3,
  107. ADD_TO_PATH_FLAG: 4
  108. };
  109. exports.TextRenderingMode = TextRenderingMode;
  110. var ImageKind = {
  111. GRAYSCALE_1BPP: 1,
  112. RGB_24BPP: 2,
  113. RGBA_32BPP: 3
  114. };
  115. exports.ImageKind = ImageKind;
  116. var AnnotationType = {
  117. TEXT: 1,
  118. LINK: 2,
  119. FREETEXT: 3,
  120. LINE: 4,
  121. SQUARE: 5,
  122. CIRCLE: 6,
  123. POLYGON: 7,
  124. POLYLINE: 8,
  125. HIGHLIGHT: 9,
  126. UNDERLINE: 10,
  127. SQUIGGLY: 11,
  128. STRIKEOUT: 12,
  129. STAMP: 13,
  130. CARET: 14,
  131. INK: 15,
  132. POPUP: 16,
  133. FILEATTACHMENT: 17,
  134. SOUND: 18,
  135. MOVIE: 19,
  136. WIDGET: 20,
  137. SCREEN: 21,
  138. PRINTERMARK: 22,
  139. TRAPNET: 23,
  140. WATERMARK: 24,
  141. THREED: 25,
  142. REDACT: 26
  143. };
  144. exports.AnnotationType = AnnotationType;
  145. var AnnotationStateModelType = {
  146. MARKED: 'Marked',
  147. REVIEW: 'Review'
  148. };
  149. exports.AnnotationStateModelType = AnnotationStateModelType;
  150. var AnnotationMarkedState = {
  151. MARKED: 'Marked',
  152. UNMARKED: 'Unmarked'
  153. };
  154. exports.AnnotationMarkedState = AnnotationMarkedState;
  155. var AnnotationReviewState = {
  156. ACCEPTED: 'Accepted',
  157. REJECTED: 'Rejected',
  158. CANCELLED: 'Cancelled',
  159. COMPLETED: 'Completed',
  160. NONE: 'None'
  161. };
  162. exports.AnnotationReviewState = AnnotationReviewState;
  163. var AnnotationReplyType = {
  164. GROUP: 'Group',
  165. REPLY: 'R'
  166. };
  167. exports.AnnotationReplyType = AnnotationReplyType;
  168. var AnnotationFlag = {
  169. INVISIBLE: 0x01,
  170. HIDDEN: 0x02,
  171. PRINT: 0x04,
  172. NOZOOM: 0x08,
  173. NOROTATE: 0x10,
  174. NOVIEW: 0x20,
  175. READONLY: 0x40,
  176. LOCKED: 0x80,
  177. TOGGLENOVIEW: 0x100,
  178. LOCKEDCONTENTS: 0x200
  179. };
  180. exports.AnnotationFlag = AnnotationFlag;
  181. var AnnotationFieldFlag = {
  182. READONLY: 0x0000001,
  183. REQUIRED: 0x0000002,
  184. NOEXPORT: 0x0000004,
  185. MULTILINE: 0x0001000,
  186. PASSWORD: 0x0002000,
  187. NOTOGGLETOOFF: 0x0004000,
  188. RADIO: 0x0008000,
  189. PUSHBUTTON: 0x0010000,
  190. COMBO: 0x0020000,
  191. EDIT: 0x0040000,
  192. SORT: 0x0080000,
  193. FILESELECT: 0x0100000,
  194. MULTISELECT: 0x0200000,
  195. DONOTSPELLCHECK: 0x0400000,
  196. DONOTSCROLL: 0x0800000,
  197. COMB: 0x1000000,
  198. RICHTEXT: 0x2000000,
  199. RADIOSINUNISON: 0x2000000,
  200. COMMITONSELCHANGE: 0x4000000
  201. };
  202. exports.AnnotationFieldFlag = AnnotationFieldFlag;
  203. var AnnotationBorderStyleType = {
  204. SOLID: 1,
  205. DASHED: 2,
  206. BEVELED: 3,
  207. INSET: 4,
  208. UNDERLINE: 5
  209. };
  210. exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
  211. var StreamType = {
  212. UNKNOWN: 'UNKNOWN',
  213. FLATE: 'FLATE',
  214. LZW: 'LZW',
  215. DCT: 'DCT',
  216. JPX: 'JPX',
  217. JBIG: 'JBIG',
  218. A85: 'A85',
  219. AHX: 'AHX',
  220. CCF: 'CCF',
  221. RLX: 'RLX'
  222. };
  223. exports.StreamType = StreamType;
  224. var FontType = {
  225. UNKNOWN: 'UNKNOWN',
  226. TYPE1: 'TYPE1',
  227. TYPE1C: 'TYPE1C',
  228. CIDFONTTYPE0: 'CIDFONTTYPE0',
  229. CIDFONTTYPE0C: 'CIDFONTTYPE0C',
  230. TRUETYPE: 'TRUETYPE',
  231. CIDFONTTYPE2: 'CIDFONTTYPE2',
  232. TYPE3: 'TYPE3',
  233. OPENTYPE: 'OPENTYPE',
  234. TYPE0: 'TYPE0',
  235. MMTYPE1: 'MMTYPE1'
  236. };
  237. exports.FontType = FontType;
  238. var VerbosityLevel = {
  239. ERRORS: 0,
  240. WARNINGS: 1,
  241. INFOS: 5
  242. };
  243. exports.VerbosityLevel = VerbosityLevel;
  244. var CMapCompressionType = {
  245. NONE: 0,
  246. BINARY: 1,
  247. STREAM: 2
  248. };
  249. exports.CMapCompressionType = CMapCompressionType;
  250. var OPS = {
  251. dependency: 1,
  252. setLineWidth: 2,
  253. setLineCap: 3,
  254. setLineJoin: 4,
  255. setMiterLimit: 5,
  256. setDash: 6,
  257. setRenderingIntent: 7,
  258. setFlatness: 8,
  259. setGState: 9,
  260. save: 10,
  261. restore: 11,
  262. transform: 12,
  263. moveTo: 13,
  264. lineTo: 14,
  265. curveTo: 15,
  266. curveTo2: 16,
  267. curveTo3: 17,
  268. closePath: 18,
  269. rectangle: 19,
  270. stroke: 20,
  271. closeStroke: 21,
  272. fill: 22,
  273. eoFill: 23,
  274. fillStroke: 24,
  275. eoFillStroke: 25,
  276. closeFillStroke: 26,
  277. closeEOFillStroke: 27,
  278. endPath: 28,
  279. clip: 29,
  280. eoClip: 30,
  281. beginText: 31,
  282. endText: 32,
  283. setCharSpacing: 33,
  284. setWordSpacing: 34,
  285. setHScale: 35,
  286. setLeading: 36,
  287. setFont: 37,
  288. setTextRenderingMode: 38,
  289. setTextRise: 39,
  290. moveText: 40,
  291. setLeadingMoveText: 41,
  292. setTextMatrix: 42,
  293. nextLine: 43,
  294. showText: 44,
  295. showSpacedText: 45,
  296. nextLineShowText: 46,
  297. nextLineSetSpacingShowText: 47,
  298. setCharWidth: 48,
  299. setCharWidthAndBounds: 49,
  300. setStrokeColorSpace: 50,
  301. setFillColorSpace: 51,
  302. setStrokeColor: 52,
  303. setStrokeColorN: 53,
  304. setFillColor: 54,
  305. setFillColorN: 55,
  306. setStrokeGray: 56,
  307. setFillGray: 57,
  308. setStrokeRGBColor: 58,
  309. setFillRGBColor: 59,
  310. setStrokeCMYKColor: 60,
  311. setFillCMYKColor: 61,
  312. shadingFill: 62,
  313. beginInlineImage: 63,
  314. beginImageData: 64,
  315. endInlineImage: 65,
  316. paintXObject: 66,
  317. markPoint: 67,
  318. markPointProps: 68,
  319. beginMarkedContent: 69,
  320. beginMarkedContentProps: 70,
  321. endMarkedContent: 71,
  322. beginCompat: 72,
  323. endCompat: 73,
  324. paintFormXObjectBegin: 74,
  325. paintFormXObjectEnd: 75,
  326. beginGroup: 76,
  327. endGroup: 77,
  328. beginAnnotations: 78,
  329. endAnnotations: 79,
  330. beginAnnotation: 80,
  331. endAnnotation: 81,
  332. paintJpegXObject: 82,
  333. paintImageMaskXObject: 83,
  334. paintImageMaskXObjectGroup: 84,
  335. paintImageXObject: 85,
  336. paintInlineImageXObject: 86,
  337. paintInlineImageXObjectGroup: 87,
  338. paintImageXObjectRepeat: 88,
  339. paintImageMaskXObjectRepeat: 89,
  340. paintSolidColorImageMask: 90,
  341. constructPath: 91
  342. };
  343. exports.OPS = OPS;
  344. var UNSUPPORTED_FEATURES = {
  345. unknown: 'unknown',
  346. forms: 'forms',
  347. javaScript: 'javaScript',
  348. smask: 'smask',
  349. shadingPattern: 'shadingPattern',
  350. font: 'font'
  351. };
  352. exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
  353. var PasswordResponses = {
  354. NEED_PASSWORD: 1,
  355. INCORRECT_PASSWORD: 2
  356. };
  357. exports.PasswordResponses = PasswordResponses;
  358. var verbosity = VerbosityLevel.WARNINGS;
  359. function setVerbosityLevel(level) {
  360. if (Number.isInteger(level)) {
  361. verbosity = level;
  362. }
  363. }
  364. function getVerbosityLevel() {
  365. return verbosity;
  366. }
  367. function info(msg) {
  368. if (verbosity >= VerbosityLevel.INFOS) {
  369. console.log("Info: ".concat(msg));
  370. }
  371. }
  372. function warn(msg) {
  373. if (verbosity >= VerbosityLevel.WARNINGS) {
  374. console.log("Warning: ".concat(msg));
  375. }
  376. }
  377. function unreachable(msg) {
  378. throw new Error(msg);
  379. }
  380. function assert(cond, msg) {
  381. if (!cond) {
  382. unreachable(msg);
  383. }
  384. }
  385. function isSameOrigin(baseUrl, otherUrl) {
  386. var base;
  387. try {
  388. base = new URL(baseUrl);
  389. if (!base.origin || base.origin === 'null') {
  390. return false;
  391. }
  392. } catch (e) {
  393. return false;
  394. }
  395. var other = new URL(otherUrl, base);
  396. return base.origin === other.origin;
  397. }
  398. function _isValidProtocol(url) {
  399. if (!url) {
  400. return false;
  401. }
  402. switch (url.protocol) {
  403. case 'http:':
  404. case 'https:':
  405. case 'ftp:':
  406. case 'mailto:':
  407. case 'tel:':
  408. return true;
  409. default:
  410. return false;
  411. }
  412. }
  413. function createValidAbsoluteUrl(url, baseUrl) {
  414. if (!url) {
  415. return null;
  416. }
  417. try {
  418. var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);
  419. if (_isValidProtocol(absoluteUrl)) {
  420. return absoluteUrl;
  421. }
  422. } catch (ex) {}
  423. return null;
  424. }
  425. function shadow(obj, prop, value) {
  426. Object.defineProperty(obj, prop, {
  427. value: value,
  428. enumerable: true,
  429. configurable: true,
  430. writable: false
  431. });
  432. return value;
  433. }
  434. var BaseException = function BaseExceptionClosure() {
  435. function BaseException(message) {
  436. if (this.constructor === BaseException) {
  437. unreachable('Cannot initialize BaseException.');
  438. }
  439. this.message = message;
  440. this.name = this.constructor.name;
  441. }
  442. BaseException.prototype = new Error();
  443. BaseException.constructor = BaseException;
  444. return BaseException;
  445. }();
  446. exports.BaseException = BaseException;
  447. var PasswordException =
  448. /*#__PURE__*/
  449. function (_BaseException) {
  450. _inherits(PasswordException, _BaseException);
  451. function PasswordException(msg, code) {
  452. var _this;
  453. _classCallCheck(this, PasswordException);
  454. _this = _possibleConstructorReturn(this, _getPrototypeOf(PasswordException).call(this, msg));
  455. _this.code = code;
  456. return _this;
  457. }
  458. return PasswordException;
  459. }(BaseException);
  460. exports.PasswordException = PasswordException;
  461. var UnknownErrorException =
  462. /*#__PURE__*/
  463. function (_BaseException2) {
  464. _inherits(UnknownErrorException, _BaseException2);
  465. function UnknownErrorException(msg, details) {
  466. var _this2;
  467. _classCallCheck(this, UnknownErrorException);
  468. _this2 = _possibleConstructorReturn(this, _getPrototypeOf(UnknownErrorException).call(this, msg));
  469. _this2.details = details;
  470. return _this2;
  471. }
  472. return UnknownErrorException;
  473. }(BaseException);
  474. exports.UnknownErrorException = UnknownErrorException;
  475. var InvalidPDFException =
  476. /*#__PURE__*/
  477. function (_BaseException3) {
  478. _inherits(InvalidPDFException, _BaseException3);
  479. function InvalidPDFException() {
  480. _classCallCheck(this, InvalidPDFException);
  481. return _possibleConstructorReturn(this, _getPrototypeOf(InvalidPDFException).apply(this, arguments));
  482. }
  483. return InvalidPDFException;
  484. }(BaseException);
  485. exports.InvalidPDFException = InvalidPDFException;
  486. var MissingPDFException =
  487. /*#__PURE__*/
  488. function (_BaseException4) {
  489. _inherits(MissingPDFException, _BaseException4);
  490. function MissingPDFException() {
  491. _classCallCheck(this, MissingPDFException);
  492. return _possibleConstructorReturn(this, _getPrototypeOf(MissingPDFException).apply(this, arguments));
  493. }
  494. return MissingPDFException;
  495. }(BaseException);
  496. exports.MissingPDFException = MissingPDFException;
  497. var UnexpectedResponseException =
  498. /*#__PURE__*/
  499. function (_BaseException5) {
  500. _inherits(UnexpectedResponseException, _BaseException5);
  501. function UnexpectedResponseException(msg, status) {
  502. var _this3;
  503. _classCallCheck(this, UnexpectedResponseException);
  504. _this3 = _possibleConstructorReturn(this, _getPrototypeOf(UnexpectedResponseException).call(this, msg));
  505. _this3.status = status;
  506. return _this3;
  507. }
  508. return UnexpectedResponseException;
  509. }(BaseException);
  510. exports.UnexpectedResponseException = UnexpectedResponseException;
  511. var FormatError =
  512. /*#__PURE__*/
  513. function (_BaseException6) {
  514. _inherits(FormatError, _BaseException6);
  515. function FormatError() {
  516. _classCallCheck(this, FormatError);
  517. return _possibleConstructorReturn(this, _getPrototypeOf(FormatError).apply(this, arguments));
  518. }
  519. return FormatError;
  520. }(BaseException);
  521. exports.FormatError = FormatError;
  522. var AbortException =
  523. /*#__PURE__*/
  524. function (_BaseException7) {
  525. _inherits(AbortException, _BaseException7);
  526. function AbortException() {
  527. _classCallCheck(this, AbortException);
  528. return _possibleConstructorReturn(this, _getPrototypeOf(AbortException).apply(this, arguments));
  529. }
  530. return AbortException;
  531. }(BaseException);
  532. exports.AbortException = AbortException;
  533. var NullCharactersRegExp = /\x00/g;
  534. function removeNullCharacters(str) {
  535. if (typeof str !== 'string') {
  536. warn('The argument for removeNullCharacters must be a string.');
  537. return str;
  538. }
  539. return str.replace(NullCharactersRegExp, '');
  540. }
  541. function bytesToString(bytes) {
  542. assert(bytes !== null && _typeof(bytes) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString');
  543. var length = bytes.length;
  544. var MAX_ARGUMENT_COUNT = 8192;
  545. if (length < MAX_ARGUMENT_COUNT) {
  546. return String.fromCharCode.apply(null, bytes);
  547. }
  548. var strBuf = [];
  549. for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
  550. var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
  551. var chunk = bytes.subarray(i, chunkEnd);
  552. strBuf.push(String.fromCharCode.apply(null, chunk));
  553. }
  554. return strBuf.join('');
  555. }
  556. function stringToBytes(str) {
  557. assert(typeof str === 'string', 'Invalid argument for stringToBytes');
  558. var length = str.length;
  559. var bytes = new Uint8Array(length);
  560. for (var i = 0; i < length; ++i) {
  561. bytes[i] = str.charCodeAt(i) & 0xFF;
  562. }
  563. return bytes;
  564. }
  565. function arrayByteLength(arr) {
  566. if (arr.length !== undefined) {
  567. return arr.length;
  568. }
  569. assert(arr.byteLength !== undefined);
  570. return arr.byteLength;
  571. }
  572. function arraysToBytes(arr) {
  573. var length = arr.length;
  574. if (length === 1 && arr[0] instanceof Uint8Array) {
  575. return arr[0];
  576. }
  577. var resultLength = 0;
  578. for (var i = 0; i < length; i++) {
  579. resultLength += arrayByteLength(arr[i]);
  580. }
  581. var pos = 0;
  582. var data = new Uint8Array(resultLength);
  583. for (var _i = 0; _i < length; _i++) {
  584. var item = arr[_i];
  585. if (!(item instanceof Uint8Array)) {
  586. if (typeof item === 'string') {
  587. item = stringToBytes(item);
  588. } else {
  589. item = new Uint8Array(item);
  590. }
  591. }
  592. var itemLength = item.byteLength;
  593. data.set(item, pos);
  594. pos += itemLength;
  595. }
  596. return data;
  597. }
  598. function string32(value) {
  599. return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
  600. }
  601. function log2(x) {
  602. if (x <= 0) {
  603. return 0;
  604. }
  605. return Math.ceil(Math.log2(x));
  606. }
  607. function readInt8(data, start) {
  608. return data[start] << 24 >> 24;
  609. }
  610. function readUint16(data, offset) {
  611. return data[offset] << 8 | data[offset + 1];
  612. }
  613. function readUint32(data, offset) {
  614. return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;
  615. }
  616. function isLittleEndian() {
  617. var buffer8 = new Uint8Array(4);
  618. buffer8[0] = 1;
  619. var view32 = new Uint32Array(buffer8.buffer, 0, 1);
  620. return view32[0] === 1;
  621. }
  622. function isEvalSupported() {
  623. try {
  624. new Function('');
  625. return true;
  626. } catch (e) {
  627. return false;
  628. }
  629. }
  630. var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
  631. var Util =
  632. /*#__PURE__*/
  633. function () {
  634. function Util() {
  635. _classCallCheck(this, Util);
  636. }
  637. _createClass(Util, null, [{
  638. key: "makeCssRgb",
  639. value: function makeCssRgb(r, g, b) {
  640. rgbBuf[1] = r;
  641. rgbBuf[3] = g;
  642. rgbBuf[5] = b;
  643. return rgbBuf.join('');
  644. }
  645. }, {
  646. key: "transform",
  647. value: function transform(m1, m2) {
  648. return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];
  649. }
  650. }, {
  651. key: "applyTransform",
  652. value: function applyTransform(p, m) {
  653. var xt = p[0] * m[0] + p[1] * m[2] + m[4];
  654. var yt = p[0] * m[1] + p[1] * m[3] + m[5];
  655. return [xt, yt];
  656. }
  657. }, {
  658. key: "applyInverseTransform",
  659. value: function applyInverseTransform(p, m) {
  660. var d = m[0] * m[3] - m[1] * m[2];
  661. var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
  662. var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
  663. return [xt, yt];
  664. }
  665. }, {
  666. key: "getAxialAlignedBoundingBox",
  667. value: function getAxialAlignedBoundingBox(r, m) {
  668. var p1 = Util.applyTransform(r, m);
  669. var p2 = Util.applyTransform(r.slice(2, 4), m);
  670. var p3 = Util.applyTransform([r[0], r[3]], m);
  671. var p4 = Util.applyTransform([r[2], r[1]], m);
  672. return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];
  673. }
  674. }, {
  675. key: "inverseTransform",
  676. value: function inverseTransform(m) {
  677. var d = m[0] * m[3] - m[1] * m[2];
  678. return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
  679. }
  680. }, {
  681. key: "apply3dTransform",
  682. value: function apply3dTransform(m, v) {
  683. return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];
  684. }
  685. }, {
  686. key: "singularValueDecompose2dScale",
  687. value: function singularValueDecompose2dScale(m) {
  688. var transpose = [m[0], m[2], m[1], m[3]];
  689. var a = m[0] * transpose[0] + m[1] * transpose[2];
  690. var b = m[0] * transpose[1] + m[1] * transpose[3];
  691. var c = m[2] * transpose[0] + m[3] * transpose[2];
  692. var d = m[2] * transpose[1] + m[3] * transpose[3];
  693. var first = (a + d) / 2;
  694. var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
  695. var sx = first + second || 1;
  696. var sy = first - second || 1;
  697. return [Math.sqrt(sx), Math.sqrt(sy)];
  698. }
  699. }, {
  700. key: "normalizeRect",
  701. value: function normalizeRect(rect) {
  702. var r = rect.slice(0);
  703. if (rect[0] > rect[2]) {
  704. r[0] = rect[2];
  705. r[2] = rect[0];
  706. }
  707. if (rect[1] > rect[3]) {
  708. r[1] = rect[3];
  709. r[3] = rect[1];
  710. }
  711. return r;
  712. }
  713. }, {
  714. key: "intersect",
  715. value: function intersect(rect1, rect2) {
  716. function compare(a, b) {
  717. return a - b;
  718. }
  719. var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);
  720. var orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);
  721. var result = [];
  722. rect1 = Util.normalizeRect(rect1);
  723. rect2 = Util.normalizeRect(rect2);
  724. if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
  725. result[0] = orderedX[1];
  726. result[2] = orderedX[2];
  727. } else {
  728. return null;
  729. }
  730. if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
  731. result[1] = orderedY[1];
  732. result[3] = orderedY[2];
  733. } else {
  734. return null;
  735. }
  736. return result;
  737. }
  738. }]);
  739. return Util;
  740. }();
  741. exports.Util = Util;
  742. var PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC];
  743. function stringToPDFString(str) {
  744. var length = str.length,
  745. strBuf = [];
  746. if (str[0] === '\xFE' && str[1] === '\xFF') {
  747. for (var i = 2; i < length; i += 2) {
  748. strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
  749. }
  750. } else {
  751. for (var _i2 = 0; _i2 < length; ++_i2) {
  752. var code = PDFStringTranslateTable[str.charCodeAt(_i2)];
  753. strBuf.push(code ? String.fromCharCode(code) : str.charAt(_i2));
  754. }
  755. }
  756. return strBuf.join('');
  757. }
  758. function stringToUTF8String(str) {
  759. return decodeURIComponent(escape(str));
  760. }
  761. function utf8StringToString(str) {
  762. return unescape(encodeURIComponent(str));
  763. }
  764. function isEmptyObj(obj) {
  765. for (var key in obj) {
  766. return false;
  767. }
  768. return true;
  769. }
  770. function isBool(v) {
  771. return typeof v === 'boolean';
  772. }
  773. function isNum(v) {
  774. return typeof v === 'number';
  775. }
  776. function isString(v) {
  777. return typeof v === 'string';
  778. }
  779. function isArrayBuffer(v) {
  780. return _typeof(v) === 'object' && v !== null && v.byteLength !== undefined;
  781. }
  782. function isArrayEqual(arr1, arr2) {
  783. if (arr1.length !== arr2.length) {
  784. return false;
  785. }
  786. return arr1.every(function (element, index) {
  787. return element === arr2[index];
  788. });
  789. }
  790. function isSpace(ch) {
  791. return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A;
  792. }
  793. function createPromiseCapability() {
  794. var capability = Object.create(null);
  795. var isSettled = false;
  796. Object.defineProperty(capability, 'settled', {
  797. get: function get() {
  798. return isSettled;
  799. }
  800. });
  801. capability.promise = new Promise(function (resolve, reject) {
  802. capability.resolve = function (data) {
  803. isSettled = true;
  804. resolve(data);
  805. };
  806. capability.reject = function (reason) {
  807. isSettled = true;
  808. reject(reason);
  809. };
  810. });
  811. return capability;
  812. }
  813. var createObjectURL = function createObjectURLClosure() {
  814. var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  815. return function createObjectURL(data, contentType) {
  816. var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  817. if (!forceDataSchema && URL.createObjectURL) {
  818. var blob = new Blob([data], {
  819. type: contentType
  820. });
  821. return URL.createObjectURL(blob);
  822. }
  823. var buffer = "data:".concat(contentType, ";base64,");
  824. for (var i = 0, ii = data.length; i < ii; i += 3) {
  825. var b1 = data[i] & 0xFF;
  826. var b2 = data[i + 1] & 0xFF;
  827. var b3 = data[i + 2] & 0xFF;
  828. var d1 = b1 >> 2,
  829. d2 = (b1 & 3) << 4 | b2 >> 4;
  830. var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64;
  831. var d4 = i + 2 < ii ? b3 & 0x3F : 64;
  832. buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
  833. }
  834. return buffer;
  835. };
  836. }();
  837. exports.createObjectURL = createObjectURL;