pdfjs-dist 2.5.207 → 2.6.347

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pdfjs-dist might be problematic. Click here for more details.

Files changed (133) hide show
  1. package/bower.json +1 -1
  2. package/build/pdf.js +867 -216
  3. package/build/pdf.js.map +1 -1
  4. package/build/pdf.min.js +1 -1
  5. package/build/pdf.worker.js +10214 -8547
  6. package/build/pdf.worker.js.map +1 -1
  7. package/build/pdf.worker.min.js +1 -1
  8. package/es5/build/pdf.js +2023 -1046
  9. package/es5/build/pdf.js.map +1 -1
  10. package/es5/build/pdf.min.js +22 -0
  11. package/es5/build/pdf.worker.js +11136 -8144
  12. package/es5/build/pdf.worker.js.map +1 -1
  13. package/es5/build/pdf.worker.min.js +22 -0
  14. package/es5/image_decoders/pdf.image_decoders.js +12529 -0
  15. package/es5/image_decoders/pdf.image_decoders.js.map +1 -0
  16. package/es5/image_decoders/pdf.image_decoders.min.js +22 -0
  17. package/es5/web/images/shadow.png +0 -0
  18. package/es5/web/pdf_viewer.css +8 -5
  19. package/es5/web/pdf_viewer.js +195 -51
  20. package/es5/web/pdf_viewer.js.map +1 -1
  21. package/image_decoders/pdf.image_decoders.js +24 -16
  22. package/image_decoders/pdf.image_decoders.js.map +1 -1
  23. package/image_decoders/pdf.image_decoders.min.js +1 -1
  24. package/lib/core/annotation.js +479 -43
  25. package/lib/core/cff_parser.js +643 -615
  26. package/lib/core/chunked_stream.js +64 -50
  27. package/lib/core/colorspace.js +126 -104
  28. package/lib/core/crypto.js +37 -0
  29. package/lib/core/document.js +128 -75
  30. package/lib/core/evaluator.js +3015 -2754
  31. package/lib/core/fonts.js +47 -46
  32. package/lib/core/function.js +79 -6
  33. package/lib/core/image.js +364 -357
  34. package/lib/core/image_utils.js +109 -8
  35. package/lib/core/jpg.js +8 -3
  36. package/lib/core/obj.js +255 -34
  37. package/lib/core/operator_list.js +17 -15
  38. package/lib/core/parser.js +40 -3
  39. package/lib/core/pattern.js +24 -11
  40. package/lib/core/primitives.js +112 -53
  41. package/lib/core/type1_parser.js +2 -0
  42. package/lib/core/worker.js +102 -37
  43. package/lib/core/writer.js +242 -0
  44. package/lib/display/annotation_layer.js +51 -10
  45. package/lib/display/annotation_storage.js +89 -0
  46. package/lib/display/api.js +140 -54
  47. package/lib/display/canvas.js +215 -46
  48. package/lib/display/display_utils.js +55 -18
  49. package/lib/display/fetch_stream.js +6 -0
  50. package/lib/display/font_loader.js +26 -15
  51. package/lib/display/metadata.js +1 -7
  52. package/lib/display/network.js +0 -14
  53. package/lib/display/node_utils.js +87 -0
  54. package/lib/display/optional_content_config.js +184 -0
  55. package/lib/display/svg.js +1 -1
  56. package/lib/display/text_layer.js +4 -1
  57. package/lib/pdf.js +2 -2
  58. package/lib/pdf.worker.js +2 -2
  59. package/lib/shared/is_node.js +1 -1
  60. package/lib/shared/util.js +13 -10
  61. package/lib/test/unit/annotation_spec.js +520 -50
  62. package/lib/test/unit/annotation_storage_spec.js +83 -0
  63. package/lib/test/unit/api_spec.js +16 -6
  64. package/lib/test/unit/cmap_spec.js +4 -4
  65. package/lib/test/unit/colorspace_spec.js +216 -24
  66. package/lib/test/unit/crypto_spec.js +51 -4
  67. package/lib/test/unit/custom_spec.js +129 -1
  68. package/lib/test/unit/document_spec.js +112 -1
  69. package/lib/test/unit/evaluator_spec.js +29 -10
  70. package/lib/test/unit/jasmine-boot.js +1 -1
  71. package/lib/test/unit/metadata_spec.js +3 -3
  72. package/lib/test/unit/primitives_spec.js +242 -63
  73. package/lib/test/unit/test_utils.js +42 -89
  74. package/lib/test/unit/testreporter.js +17 -6
  75. package/lib/test/unit/util_spec.js +13 -12
  76. package/lib/test/unit/writer_spec.js +84 -0
  77. package/lib/web/annotation_layer_builder.js +13 -9
  78. package/lib/web/app.js +231 -26
  79. package/lib/web/app_options.js +1 -6
  80. package/lib/web/base_tree_viewer.js +100 -0
  81. package/lib/web/base_viewer.js +53 -4
  82. package/lib/web/download_manager.js +3 -10
  83. package/lib/web/firefox_print_service.js +32 -12
  84. package/lib/web/firefoxcom.js +20 -6
  85. package/lib/web/interfaces.js +1 -1
  86. package/lib/web/pdf_attachment_viewer.js +80 -38
  87. package/lib/web/pdf_find_controller.js +2 -1
  88. package/lib/web/pdf_layer_viewer.js +208 -0
  89. package/lib/web/pdf_outline_viewer.js +24 -57
  90. package/lib/web/pdf_page_view.js +29 -6
  91. package/lib/web/pdf_print_service.js +13 -11
  92. package/lib/web/pdf_sidebar.js +46 -25
  93. package/lib/web/pdf_thumbnail_view.js +16 -3
  94. package/lib/web/pdf_thumbnail_viewer.js +17 -1
  95. package/lib/web/pdf_viewer.component.js +2 -2
  96. package/lib/web/preferences.js +1 -1
  97. package/lib/web/toolbar.js +1 -1
  98. package/lib/web/ui_utils.js +7 -1
  99. package/package.json +3 -1
  100. package/types/display/annotation_layer.d.ts +61 -0
  101. package/types/display/annotation_storage.d.ts +36 -0
  102. package/types/display/api.d.ts +1107 -0
  103. package/types/display/api_compatibility.d.ts +1 -0
  104. package/types/display/canvas.d.ts +4 -0
  105. package/types/display/content_disposition.d.ts +7 -0
  106. package/types/display/display_utils.d.ts +243 -0
  107. package/types/display/fetch_stream.d.ts +67 -0
  108. package/types/display/font_loader.d.ts +19 -0
  109. package/types/display/metadata.d.ts +9 -0
  110. package/types/display/network.d.ts +80 -0
  111. package/types/display/network_utils.d.ts +14 -0
  112. package/types/display/node_stream.d.ts +72 -0
  113. package/types/display/node_utils.d.ts +6 -0
  114. package/types/display/optional_content_config.d.ts +12 -0
  115. package/types/display/pattern_helper.d.ts +5 -0
  116. package/types/display/svg.d.ts +2 -0
  117. package/types/display/text_layer.d.ts +83 -0
  118. package/types/display/transport_stream.d.ts +57 -0
  119. package/types/display/webgl.d.ts +20 -0
  120. package/types/display/worker_options.d.ts +27 -0
  121. package/types/display/xml_parser.d.ts +35 -0
  122. package/types/pdf.d.ts +33 -0
  123. package/types/shared/compatibility.d.ts +1 -0
  124. package/types/shared/is_node.d.ts +1 -0
  125. package/types/shared/message_handler.d.ts +62 -0
  126. package/types/shared/util.d.ts +421 -0
  127. package/web/images/shadow.png +0 -0
  128. package/web/pdf_viewer.css +8 -5
  129. package/web/pdf_viewer.js +109 -33
  130. package/web/pdf_viewer.js.map +1 -1
  131. package/webpack.js +1 -9
  132. package/es5/web/images/texture.png +0 -0
  133. package/web/images/texture.png +0 -0
@@ -24,16 +24,23 @@
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.GlobalImageCache = exports.LocalImageCache = void 0;
27
+ exports.GlobalImageCache = exports.LocalGStateCache = exports.LocalFunctionCache = exports.LocalColorSpaceCache = exports.LocalImageCache = void 0;
28
28
 
29
29
  var _util = require("../shared/util.js");
30
30
 
31
31
  var _primitives = require("./primitives.js");
32
32
 
33
- class LocalImageCache {
34
- constructor() {
35
- this._nameRefMap = new Map();
36
- this._imageMap = new Map();
33
+ class BaseLocalCache {
34
+ constructor(options) {
35
+ if (this.constructor === BaseLocalCache) {
36
+ (0, _util.unreachable)("Cannot initialize BaseLocalCache.");
37
+ }
38
+
39
+ if (!options || !options.onlyRefs) {
40
+ this._nameRefMap = new Map();
41
+ this._imageMap = new Map();
42
+ }
43
+
37
44
  this._imageCache = new _primitives.RefSetCache();
38
45
  }
39
46
 
@@ -51,6 +58,13 @@ class LocalImageCache {
51
58
  return this._imageCache.get(ref) || null;
52
59
  }
53
60
 
61
+ set(name, ref, data) {
62
+ (0, _util.unreachable)("Abstract method `set` called.");
63
+ }
64
+
65
+ }
66
+
67
+ class LocalImageCache extends BaseLocalCache {
54
68
  set(name, ref = null, data) {
55
69
  if (!name) {
56
70
  throw new Error('LocalImageCache.set - expected "name" argument.');
@@ -79,6 +93,93 @@ class LocalImageCache {
79
93
 
80
94
  exports.LocalImageCache = LocalImageCache;
81
95
 
96
+ class LocalColorSpaceCache extends BaseLocalCache {
97
+ set(name = null, ref = null, data) {
98
+ if (!name && !ref) {
99
+ throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');
100
+ }
101
+
102
+ if (ref) {
103
+ if (this._imageCache.has(ref)) {
104
+ return;
105
+ }
106
+
107
+ if (name) {
108
+ this._nameRefMap.set(name, ref);
109
+ }
110
+
111
+ this._imageCache.put(ref, data);
112
+
113
+ return;
114
+ }
115
+
116
+ if (this._imageMap.has(name)) {
117
+ return;
118
+ }
119
+
120
+ this._imageMap.set(name, data);
121
+ }
122
+
123
+ }
124
+
125
+ exports.LocalColorSpaceCache = LocalColorSpaceCache;
126
+
127
+ class LocalFunctionCache extends BaseLocalCache {
128
+ constructor(options) {
129
+ super({
130
+ onlyRefs: true
131
+ });
132
+ }
133
+
134
+ getByName(name) {
135
+ (0, _util.unreachable)("Should not call `getByName` method.");
136
+ }
137
+
138
+ set(name = null, ref, data) {
139
+ if (!ref) {
140
+ throw new Error('LocalFunctionCache.set - expected "ref" argument.');
141
+ }
142
+
143
+ if (this._imageCache.has(ref)) {
144
+ return;
145
+ }
146
+
147
+ this._imageCache.put(ref, data);
148
+ }
149
+
150
+ }
151
+
152
+ exports.LocalFunctionCache = LocalFunctionCache;
153
+
154
+ class LocalGStateCache extends BaseLocalCache {
155
+ set(name, ref = null, data) {
156
+ if (!name) {
157
+ throw new Error('LocalGStateCache.set - expected "name" argument.');
158
+ }
159
+
160
+ if (ref) {
161
+ if (this._imageCache.has(ref)) {
162
+ return;
163
+ }
164
+
165
+ this._nameRefMap.set(name, ref);
166
+
167
+ this._imageCache.put(ref, data);
168
+
169
+ return;
170
+ }
171
+
172
+ if (this._imageMap.has(name)) {
173
+ return;
174
+ }
175
+
176
+ this._imageMap.set(name, data);
177
+ }
178
+
179
+ }
180
+
181
+ exports.LocalGStateCache = LocalGStateCache;
182
+
82
183
  class GlobalImageCache {
83
184
  static get NUM_PAGES_THRESHOLD() {
84
185
  return (0, _util.shadow)(this, "NUM_PAGES_THRESHOLD", 2);
@@ -122,12 +223,12 @@ class GlobalImageCache {
122
223
  }
123
224
 
124
225
  getData(ref, pageIndex) {
125
- if (!this._refCache.has(ref)) {
226
+ const pageIndexSet = this._refCache.get(ref);
227
+
228
+ if (!pageIndexSet) {
126
229
  return null;
127
230
  }
128
231
 
129
- const pageIndexSet = this._refCache.get(ref);
130
-
131
232
  if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {
132
233
  return null;
133
234
  }
package/lib/core/jpg.js CHANGED
@@ -154,9 +154,9 @@ var JpegImage = function JpegImageClosure() {
154
154
  }
155
155
  } else if (nextByte === 0xd9) {
156
156
  if (parseDNLMarker) {
157
- const maybeScanLines = blockRow * 8;
157
+ const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);
158
158
 
159
- if (maybeScanLines > 0 && maybeScanLines < frame.scanLines / 10) {
159
+ if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 10) {
160
160
  throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, " + "possibly caused by incorrect `scanLines` parameter", maybeScanLines);
161
161
  }
162
162
  }
@@ -976,8 +976,10 @@ var JpegImage = function JpegImageClosure() {
976
976
  component;
977
977
 
978
978
  for (i = 0; i < selectorsCount; i++) {
979
- var componentIndex = frame.componentIds[data[offset++]];
979
+ const index = data[offset++];
980
+ var componentIndex = frame.componentIds[index];
980
981
  component = frame.components[componentIndex];
982
+ component.index = index;
981
983
  var tableSpec = data[offset++];
982
984
  component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];
983
985
  component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];
@@ -1054,6 +1056,7 @@ var JpegImage = function JpegImageClosure() {
1054
1056
  }
1055
1057
 
1056
1058
  this.components.push({
1059
+ index: component.index,
1057
1060
  output: buildComponentData(frame, component),
1058
1061
  scaleX: component.h / frame.maxH,
1059
1062
  scaleY: component.v / frame.maxV,
@@ -1134,6 +1137,8 @@ var JpegImage = function JpegImageClosure() {
1134
1137
  if (this.numComponents === 3) {
1135
1138
  if (this._colorTransform === 0) {
1136
1139
  return false;
1140
+ } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) {
1141
+ return false;
1137
1142
  }
1138
1143
 
1139
1144
  return true;
package/lib/core/obj.js CHANGED
@@ -48,9 +48,9 @@ class Catalog {
48
48
  constructor(pdfManager, xref) {
49
49
  this.pdfManager = pdfManager;
50
50
  this.xref = xref;
51
- this.catDict = xref.getCatalogObj();
51
+ this._catDict = xref.getCatalogObj();
52
52
 
53
- if (!(0, _primitives.isDict)(this.catDict)) {
53
+ if (!(0, _primitives.isDict)(this._catDict)) {
54
54
  throw new _util.FormatError("Catalog object is not a dictionary.");
55
55
  }
56
56
 
@@ -60,8 +60,58 @@ class Catalog {
60
60
  this.pageKidsCountCache = new _primitives.RefSetCache();
61
61
  }
62
62
 
63
+ get version() {
64
+ const version = this._catDict.get("Version");
65
+
66
+ if (!(0, _primitives.isName)(version)) {
67
+ return (0, _util.shadow)(this, "version", null);
68
+ }
69
+
70
+ return (0, _util.shadow)(this, "version", version.name);
71
+ }
72
+
73
+ get collection() {
74
+ let collection = null;
75
+
76
+ try {
77
+ const obj = this._catDict.get("Collection");
78
+
79
+ if ((0, _primitives.isDict)(obj) && obj.size > 0) {
80
+ collection = obj;
81
+ }
82
+ } catch (ex) {
83
+ if (ex instanceof _core_utils.MissingDataException) {
84
+ throw ex;
85
+ }
86
+
87
+ (0, _util.info)("Cannot fetch Collection entry; assuming no collection is present.");
88
+ }
89
+
90
+ return (0, _util.shadow)(this, "collection", collection);
91
+ }
92
+
93
+ get acroForm() {
94
+ let acroForm = null;
95
+
96
+ try {
97
+ const obj = this._catDict.get("AcroForm");
98
+
99
+ if ((0, _primitives.isDict)(obj) && obj.size > 0) {
100
+ acroForm = obj;
101
+ }
102
+ } catch (ex) {
103
+ if (ex instanceof _core_utils.MissingDataException) {
104
+ throw ex;
105
+ }
106
+
107
+ (0, _util.info)("Cannot fetch AcroForm entry; assuming no forms are present.");
108
+ }
109
+
110
+ return (0, _util.shadow)(this, "acroForm", acroForm);
111
+ }
112
+
63
113
  get metadata() {
64
- const streamRef = this.catDict.getRaw("Metadata");
114
+ const streamRef = this._catDict.getRaw("Metadata");
65
115
 
66
116
  if (!(0, _primitives.isRef)(streamRef)) {
67
117
  return (0, _util.shadow)(this, "metadata", null);
@@ -92,7 +142,7 @@ class Catalog {
92
142
  }
93
143
 
94
144
  get toplevelPagesDict() {
95
- const pagesObj = this.catDict.get("Pages");
145
+ const pagesObj = this._catDict.get("Pages");
96
146
 
97
147
  if (!(0, _primitives.isDict)(pagesObj)) {
98
148
  throw new _util.FormatError("Invalid top-level pages dictionary.");
@@ -118,7 +168,7 @@ class Catalog {
118
168
  }
119
169
 
120
170
  _readDocumentOutline() {
121
- let obj = this.catDict.get("Outlines");
171
+ let obj = this._catDict.get("Outlines");
122
172
 
123
173
  if (!(0, _primitives.isDict)(obj)) {
124
174
  return null;
@@ -253,6 +303,166 @@ class Catalog {
253
303
  return permissions;
254
304
  }
255
305
 
306
+ get optionalContentConfig() {
307
+ let config = null;
308
+
309
+ try {
310
+ const properties = this._catDict.get("OCProperties");
311
+
312
+ if (!properties) {
313
+ return (0, _util.shadow)(this, "optionalContentConfig", null);
314
+ }
315
+
316
+ const defaultConfig = properties.get("D");
317
+
318
+ if (!defaultConfig) {
319
+ return (0, _util.shadow)(this, "optionalContentConfig", null);
320
+ }
321
+
322
+ const groupsData = properties.get("OCGs");
323
+
324
+ if (!Array.isArray(groupsData)) {
325
+ return (0, _util.shadow)(this, "optionalContentConfig", null);
326
+ }
327
+
328
+ const groups = [];
329
+ const groupRefs = [];
330
+
331
+ for (const groupRef of groupsData) {
332
+ if (!(0, _primitives.isRef)(groupRef)) {
333
+ continue;
334
+ }
335
+
336
+ groupRefs.push(groupRef);
337
+ const group = this.xref.fetchIfRef(groupRef);
338
+ groups.push({
339
+ id: groupRef.toString(),
340
+ name: (0, _util.isString)(group.get("Name")) ? (0, _util.stringToPDFString)(group.get("Name")) : null,
341
+ intent: (0, _util.isString)(group.get("Intent")) ? (0, _util.stringToPDFString)(group.get("Intent")) : null
342
+ });
343
+ }
344
+
345
+ config = this._readOptionalContentConfig(defaultConfig, groupRefs);
346
+ config.groups = groups;
347
+ } catch (ex) {
348
+ if (ex instanceof _core_utils.MissingDataException) {
349
+ throw ex;
350
+ }
351
+
352
+ (0, _util.warn)(`Unable to read optional content config: ${ex}`);
353
+ }
354
+
355
+ return (0, _util.shadow)(this, "optionalContentConfig", config);
356
+ }
357
+
358
+ _readOptionalContentConfig(config, contentGroupRefs) {
359
+ function parseOnOff(refs) {
360
+ const onParsed = [];
361
+
362
+ if (Array.isArray(refs)) {
363
+ for (const value of refs) {
364
+ if (!(0, _primitives.isRef)(value)) {
365
+ continue;
366
+ }
367
+
368
+ if (contentGroupRefs.includes(value)) {
369
+ onParsed.push(value.toString());
370
+ }
371
+ }
372
+ }
373
+
374
+ return onParsed;
375
+ }
376
+
377
+ function parseOrder(refs, nestedLevels = 0) {
378
+ if (!Array.isArray(refs)) {
379
+ return null;
380
+ }
381
+
382
+ const order = [];
383
+
384
+ for (const value of refs) {
385
+ if ((0, _primitives.isRef)(value) && contentGroupRefs.includes(value)) {
386
+ parsedOrderRefs.put(value);
387
+ order.push(value.toString());
388
+ continue;
389
+ }
390
+
391
+ const nestedOrder = parseNestedOrder(value, nestedLevels);
392
+
393
+ if (nestedOrder) {
394
+ order.push(nestedOrder);
395
+ }
396
+ }
397
+
398
+ if (nestedLevels > 0) {
399
+ return order;
400
+ }
401
+
402
+ const hiddenGroups = [];
403
+
404
+ for (const groupRef of contentGroupRefs) {
405
+ if (parsedOrderRefs.has(groupRef)) {
406
+ continue;
407
+ }
408
+
409
+ hiddenGroups.push(groupRef.toString());
410
+ }
411
+
412
+ if (hiddenGroups.length) {
413
+ order.push({
414
+ name: null,
415
+ order: hiddenGroups
416
+ });
417
+ }
418
+
419
+ return order;
420
+ }
421
+
422
+ function parseNestedOrder(ref, nestedLevels) {
423
+ if (++nestedLevels > MAX_NESTED_LEVELS) {
424
+ (0, _util.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS.");
425
+ return null;
426
+ }
427
+
428
+ const value = xref.fetchIfRef(ref);
429
+
430
+ if (!Array.isArray(value)) {
431
+ return null;
432
+ }
433
+
434
+ const nestedName = xref.fetchIfRef(value[0]);
435
+
436
+ if (typeof nestedName !== "string") {
437
+ return null;
438
+ }
439
+
440
+ const nestedOrder = parseOrder(value.slice(1), nestedLevels);
441
+
442
+ if (!nestedOrder || !nestedOrder.length) {
443
+ return null;
444
+ }
445
+
446
+ return {
447
+ name: (0, _util.stringToPDFString)(nestedName),
448
+ order: nestedOrder
449
+ };
450
+ }
451
+
452
+ const xref = this.xref,
453
+ parsedOrderRefs = new _primitives.RefSet(),
454
+ MAX_NESTED_LEVELS = 10;
455
+ return {
456
+ name: (0, _util.isString)(config.get("Name")) ? (0, _util.stringToPDFString)(config.get("Name")) : null,
457
+ creator: (0, _util.isString)(config.get("Creator")) ? (0, _util.stringToPDFString)(config.get("Creator")) : null,
458
+ baseState: (0, _primitives.isName)(config.get("BaseState")) ? config.get("BaseState").name : null,
459
+ on: parseOnOff(config.get("ON")),
460
+ off: parseOnOff(config.get("OFF")),
461
+ order: parseOrder(config.get("Order")),
462
+ groups: null
463
+ };
464
+ }
465
+
256
466
  get numPages() {
257
467
  const obj = this.toplevelPagesDict.get("Count");
258
468
 
@@ -295,12 +505,12 @@ class Catalog {
295
505
  }
296
506
 
297
507
  _readDests() {
298
- const obj = this.catDict.get("Names");
508
+ const obj = this._catDict.get("Names");
299
509
 
300
510
  if (obj && obj.has("Dests")) {
301
511
  return new NameTree(obj.getRaw("Dests"), this.xref);
302
- } else if (this.catDict.has("Dests")) {
303
- return this.catDict.get("Dests");
512
+ } else if (this._catDict.has("Dests")) {
513
+ return this._catDict.get("Dests");
304
514
  }
305
515
 
306
516
  return undefined;
@@ -323,7 +533,7 @@ class Catalog {
323
533
  }
324
534
 
325
535
  _readPageLabels() {
326
- const obj = this.catDict.getRaw("PageLabels");
536
+ const obj = this._catDict.getRaw("PageLabels");
327
537
 
328
538
  if (!obj) {
329
539
  return null;
@@ -429,7 +639,8 @@ class Catalog {
429
639
  }
430
640
 
431
641
  get pageLayout() {
432
- const obj = this.catDict.get("PageLayout");
642
+ const obj = this._catDict.get("PageLayout");
643
+
433
644
  let pageLayout = "";
434
645
 
435
646
  if ((0, _primitives.isName)(obj)) {
@@ -448,7 +659,8 @@ class Catalog {
448
659
  }
449
660
 
450
661
  get pageMode() {
451
- const obj = this.catDict.get("PageMode");
662
+ const obj = this._catDict.get("PageMode");
663
+
452
664
  let pageMode = "UseNone";
453
665
 
454
666
  if ((0, _primitives.isName)(obj)) {
@@ -486,7 +698,9 @@ class Catalog {
486
698
  PrintPageRange: Array.isArray,
487
699
  NumCopies: Number.isInteger
488
700
  };
489
- const obj = this.catDict.get("ViewerPreferences");
701
+
702
+ const obj = this._catDict.get("ViewerPreferences");
703
+
490
704
  let prefs = null;
491
705
 
492
706
  if ((0, _primitives.isDict)(obj)) {
@@ -627,7 +841,8 @@ class Catalog {
627
841
  }
628
842
 
629
843
  get openAction() {
630
- const obj = this.catDict.get("OpenAction");
844
+ const obj = this._catDict.get("OpenAction");
845
+
631
846
  let openAction = null;
632
847
 
633
848
  if ((0, _primitives.isDict)(obj)) {
@@ -668,7 +883,8 @@ class Catalog {
668
883
  }
669
884
 
670
885
  get attachments() {
671
- const obj = this.catDict.get("Names");
886
+ const obj = this._catDict.get("Names");
887
+
672
888
  let attachments = null;
673
889
 
674
890
  if (obj && obj.has("EmbeddedFiles")) {
@@ -690,7 +906,8 @@ class Catalog {
690
906
  }
691
907
 
692
908
  get javaScript() {
693
- const obj = this.catDict.get("Names");
909
+ const obj = this._catDict.get("Names");
910
+
694
911
  let javaScript = null;
695
912
 
696
913
  function appendIfJavaScriptDict(jsDict) {
@@ -728,7 +945,7 @@ class Catalog {
728
945
  }
729
946
  }
730
947
 
731
- const openAction = this.catDict.get("OpenAction");
948
+ const openAction = this._catDict.get("OpenAction");
732
949
 
733
950
  if ((0, _primitives.isDict)(openAction) && (0, _primitives.isName)(openAction.get("S"), "JavaScript")) {
734
951
  appendIfJavaScriptDict(openAction);
@@ -774,7 +991,7 @@ class Catalog {
774
991
 
775
992
  getPageDict(pageIndex) {
776
993
  const capability = (0, _util.createPromiseCapability)();
777
- const nodesToVisit = [this.catDict.getRaw("Pages")];
994
+ const nodesToVisit = [this._catDict.getRaw("Pages")];
778
995
  const visitedNodes = new _primitives.RefSet();
779
996
  const xref = this.xref,
780
997
  pageKidsCountCache = this.pageKidsCountCache;
@@ -1139,9 +1356,20 @@ var XRef = function XRefClosure() {
1139
1356
  streamTypes: Object.create(null),
1140
1357
  fontTypes: Object.create(null)
1141
1358
  };
1359
+ this._newRefNum = null;
1142
1360
  }
1143
1361
 
1144
1362
  XRef.prototype = {
1363
+ getNewRef: function XRef_getNewRef() {
1364
+ if (this._newRefNum === null) {
1365
+ this._newRefNum = this.entries.length;
1366
+ }
1367
+
1368
+ return _primitives.Ref.get(this._newRefNum++, 0);
1369
+ },
1370
+ resetNewRef: function XRef_resetNewRef() {
1371
+ this._newRefNum = null;
1372
+ },
1145
1373
  setStartXRef: function XRef_setStartXRef(startXRef) {
1146
1374
  this.startXRefQueue = [startXRef];
1147
1375
  },
@@ -2143,24 +2371,17 @@ const ObjectLoader = function () {
2143
2371
  }
2144
2372
 
2145
2373
  function addChildren(node, nodesToVisit) {
2146
- if (node instanceof _primitives.Dict || (0, _primitives.isStream)(node)) {
2147
- const dict = node instanceof _primitives.Dict ? node : node.dict;
2148
- const dictKeys = dict.getKeys();
2149
-
2150
- for (let i = 0, ii = dictKeys.length; i < ii; i++) {
2151
- const rawValue = dict.getRaw(dictKeys[i]);
2152
-
2153
- if (mayHaveChildren(rawValue)) {
2154
- nodesToVisit.push(rawValue);
2155
- }
2156
- }
2157
- } else if (Array.isArray(node)) {
2158
- for (let i = 0, ii = node.length; i < ii; i++) {
2159
- const value = node[i];
2374
+ if (node instanceof _primitives.Dict) {
2375
+ node = node.getRawValues();
2376
+ } else if ((0, _primitives.isStream)(node)) {
2377
+ node = node.dict.getRawValues();
2378
+ } else if (!Array.isArray(node)) {
2379
+ return;
2380
+ }
2160
2381
 
2161
- if (mayHaveChildren(value)) {
2162
- nodesToVisit.push(value);
2163
- }
2382
+ for (const rawValue of node) {
2383
+ if (mayHaveChildren(rawValue)) {
2384
+ nodesToVisit.push(rawValue);
2164
2385
  }
2165
2386
  }
2166
2387
  }
@@ -212,18 +212,20 @@ var QueueOptimizer = function QueueOptimizerClosure() {
212
212
  var isSameImage = false;
213
213
  var iTransform, transformArgs;
214
214
  var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];
215
+ const firstTransformArg0 = argsArray[iFirstTransform][0],
216
+ firstTransformArg1 = argsArray[iFirstTransform][1],
217
+ firstTransformArg2 = argsArray[iFirstTransform][2],
218
+ firstTransformArg3 = argsArray[iFirstTransform][3];
215
219
 
216
- if (argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0) {
220
+ if (firstTransformArg1 === firstTransformArg2) {
217
221
  isSameImage = true;
218
- var firstTransformArg0 = argsArray[iFirstTransform][0];
219
- var firstTransformArg3 = argsArray[iFirstTransform][3];
220
222
  iTransform = iFirstTransform + 4;
221
223
  var iPIMXO = iFirstPIMXO + 4;
222
224
 
223
225
  for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {
224
226
  transformArgs = argsArray[iTransform];
225
227
 
226
- if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== 0 || transformArgs[2] !== 0 || transformArgs[3] !== firstTransformArg3) {
228
+ if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) {
227
229
  if (q < MIN_IMAGES_IN_MASKS_BLOCK) {
228
230
  isSameImage = false;
229
231
  } else {
@@ -247,7 +249,7 @@ var QueueOptimizer = function QueueOptimizerClosure() {
247
249
  }
248
250
 
249
251
  fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat);
250
- argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]);
252
+ argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]);
251
253
  } else {
252
254
  count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);
253
255
  var images = [];
@@ -543,7 +545,7 @@ var OperatorList = function OperatorListClosure() {
543
545
  var CHUNK_SIZE = 1000;
544
546
  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5;
545
547
 
546
- function OperatorList(intent, streamSink, pageIndex) {
548
+ function OperatorList(intent, streamSink) {
547
549
  this._streamSink = streamSink;
548
550
  this.fnArray = [];
549
551
  this.argsArray = [];
@@ -554,10 +556,8 @@ var OperatorList = function OperatorListClosure() {
554
556
  this.optimizer = new NullOptimizer(this);
555
557
  }
556
558
 
557
- this.dependencies = Object.create(null);
559
+ this.dependencies = new Set();
558
560
  this._totalLength = 0;
559
- this.pageIndex = pageIndex;
560
- this.intent = intent;
561
561
  this.weight = 0;
562
562
  this._resolved = streamSink ? null : Promise.resolve();
563
563
  }
@@ -589,17 +589,17 @@ var OperatorList = function OperatorListClosure() {
589
589
  },
590
590
 
591
591
  addDependency(dependency) {
592
- if (dependency in this.dependencies) {
592
+ if (this.dependencies.has(dependency)) {
593
593
  return;
594
594
  }
595
595
 
596
- this.dependencies[dependency] = true;
596
+ this.dependencies.add(dependency);
597
597
  this.addOp(_util.OPS.dependency, [dependency]);
598
598
  },
599
599
 
600
600
  addDependencies(dependencies) {
601
- for (var key in dependencies) {
602
- this.addDependency(key);
601
+ for (const dependency of dependencies) {
602
+ this.addDependency(dependency);
603
603
  }
604
604
  },
605
605
 
@@ -609,7 +609,9 @@ var OperatorList = function OperatorListClosure() {
609
609
  return;
610
610
  }
611
611
 
612
- Object.assign(this.dependencies, opList.dependencies);
612
+ for (const dependency of opList.dependencies) {
613
+ this.dependencies.add(dependency);
614
+ }
613
615
 
614
616
  for (var i = 0, ii = opList.length; i < ii; i++) {
615
617
  this.addOp(opList.fnArray[i], opList.argsArray[i]);
@@ -663,7 +665,7 @@ var OperatorList = function OperatorListClosure() {
663
665
  length
664
666
  }, 1, this._transfers);
665
667
 
666
- this.dependencies = Object.create(null);
668
+ this.dependencies.clear();
667
669
  this.fnArray.length = 0;
668
670
  this.argsArray.length = 0;
669
671
  this.weight = 0;