pdfjs-dist 2.0.489 → 2.2.228

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 (169) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +18515 -11402
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +1 -1
  6. package/build/pdf.worker.js +48266 -37137
  7. package/build/pdf.worker.js.map +1 -1
  8. package/build/pdf.worker.min.js +1 -1
  9. package/external/url/url-lib.js +627 -0
  10. package/image_decoders/pdf.image_decoders.js +11350 -0
  11. package/image_decoders/pdf.image_decoders.js.map +1 -0
  12. package/image_decoders/pdf.image_decoders.min.js +1 -0
  13. package/lib/core/annotation.js +587 -242
  14. package/lib/core/arithmetic_decoder.js +275 -245
  15. package/lib/core/bidi.js +65 -6
  16. package/lib/core/ccitt.js +173 -18
  17. package/lib/core/ccitt_stream.js +15 -6
  18. package/lib/core/cff_parser.js +433 -61
  19. package/lib/core/charsets.js +5 -4
  20. package/lib/core/chunked_stream.js +400 -152
  21. package/lib/core/cmap.js +326 -87
  22. package/lib/core/colorspace.js +874 -594
  23. package/lib/core/core_utils.js +147 -0
  24. package/lib/core/crypto.js +290 -45
  25. package/lib/core/document.js +560 -268
  26. package/lib/core/encodings.js +19 -10
  27. package/lib/core/evaluator.js +1005 -360
  28. package/lib/core/font_renderer.js +331 -97
  29. package/lib/core/fonts.js +812 -195
  30. package/lib/core/function.js +284 -71
  31. package/lib/core/glyphlist.js +4 -3
  32. package/lib/core/image.js +169 -62
  33. package/lib/core/image_utils.js +111 -0
  34. package/lib/core/jbig2.js +479 -66
  35. package/lib/core/jbig2_stream.js +19 -8
  36. package/lib/core/jpeg_stream.js +38 -13
  37. package/lib/core/jpg.js +253 -29
  38. package/lib/core/jpx.js +396 -6
  39. package/lib/core/jpx_stream.js +18 -6
  40. package/lib/core/metrics.js +15 -15
  41. package/lib/core/murmurhash3.js +56 -34
  42. package/lib/core/obj.js +1354 -488
  43. package/lib/core/operator_list.js +144 -31
  44. package/lib/core/parser.js +539 -191
  45. package/lib/core/pattern.js +148 -14
  46. package/lib/core/pdf_manager.js +323 -133
  47. package/lib/core/primitives.js +111 -24
  48. package/lib/core/ps_parser.js +134 -45
  49. package/lib/core/standard_fonts.js +17 -17
  50. package/lib/core/stream.js +313 -34
  51. package/lib/core/type1_parser.js +143 -13
  52. package/lib/core/unicode.js +32 -5
  53. package/lib/core/worker.js +217 -190
  54. package/lib/core/worker_stream.js +277 -0
  55. package/lib/display/annotation_layer.js +450 -133
  56. package/lib/display/api.js +1597 -784
  57. package/lib/display/api_compatibility.js +11 -13
  58. package/lib/display/canvas.js +360 -44
  59. package/lib/display/content_disposition.js +83 -32
  60. package/lib/display/display_utils.js +747 -0
  61. package/lib/display/fetch_stream.js +221 -90
  62. package/lib/display/font_loader.js +468 -236
  63. package/lib/display/metadata.js +38 -16
  64. package/lib/display/network.js +635 -428
  65. package/lib/display/network_utils.js +32 -19
  66. package/lib/display/node_stream.js +367 -175
  67. package/lib/display/pattern_helper.js +81 -31
  68. package/lib/display/svg.js +1235 -519
  69. package/lib/display/text_layer.js +153 -29
  70. package/lib/display/transport_stream.js +345 -94
  71. package/lib/display/webgl.js +64 -18
  72. package/lib/display/worker_options.js +5 -4
  73. package/lib/display/xml_parser.js +166 -53
  74. package/lib/examples/node/domstubs.js +60 -4
  75. package/lib/pdf.js +36 -14
  76. package/lib/pdf.worker.js +5 -3
  77. package/lib/shared/compatibility.js +158 -564
  78. package/lib/shared/global_scope.js +2 -2
  79. package/lib/shared/is_node.js +4 -4
  80. package/lib/shared/message_handler.js +521 -0
  81. package/lib/shared/streams_polyfill.js +21 -17
  82. package/lib/shared/url_polyfill.js +56 -0
  83. package/lib/shared/util.js +243 -710
  84. package/lib/test/unit/annotation_spec.js +870 -401
  85. package/lib/test/unit/api_spec.js +657 -345
  86. package/lib/test/unit/bidi_spec.js +7 -7
  87. package/lib/test/unit/cff_parser_spec.js +54 -11
  88. package/lib/test/unit/clitests_helper.js +10 -8
  89. package/lib/test/unit/cmap_spec.js +95 -41
  90. package/lib/test/unit/colorspace_spec.js +115 -63
  91. package/lib/test/unit/core_utils_spec.js +191 -0
  92. package/lib/test/unit/crypto_spec.js +17 -5
  93. package/lib/test/unit/custom_spec.js +43 -55
  94. package/lib/test/unit/display_svg_spec.js +34 -18
  95. package/lib/test/unit/display_utils_spec.js +273 -0
  96. package/lib/test/unit/document_spec.js +8 -13
  97. package/lib/test/unit/encodings_spec.js +25 -45
  98. package/lib/test/unit/evaluator_spec.js +38 -15
  99. package/lib/test/unit/fetch_stream_spec.js +109 -0
  100. package/lib/test/unit/function_spec.js +17 -5
  101. package/lib/test/unit/jasmine-boot.js +33 -20
  102. package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
  103. package/lib/test/unit/metadata_spec.js +71 -11
  104. package/lib/test/unit/murmurhash3_spec.js +3 -3
  105. package/lib/test/unit/network_spec.js +19 -54
  106. package/lib/test/unit/network_utils_spec.js +91 -14
  107. package/lib/test/unit/node_stream_spec.js +56 -32
  108. package/lib/test/unit/parser_spec.js +162 -71
  109. package/lib/test/unit/pdf_find_controller_spec.js +230 -0
  110. package/lib/test/unit/pdf_find_utils_spec.js +63 -0
  111. package/lib/test/unit/pdf_history_spec.js +21 -9
  112. package/lib/test/unit/primitives_spec.js +53 -20
  113. package/lib/test/unit/stream_spec.js +12 -4
  114. package/lib/test/unit/test_utils.js +273 -56
  115. package/lib/test/unit/testreporter.js +21 -3
  116. package/lib/test/unit/type1_parser_spec.js +8 -6
  117. package/lib/test/unit/ui_utils_spec.js +454 -16
  118. package/lib/test/unit/unicode_spec.js +18 -15
  119. package/lib/test/unit/util_spec.js +87 -128
  120. package/lib/web/annotation_layer_builder.js +39 -22
  121. package/lib/web/app.js +1290 -588
  122. package/lib/web/app_options.js +100 -62
  123. package/lib/web/base_viewer.js +511 -182
  124. package/lib/web/chromecom.js +261 -117
  125. package/lib/web/debugger.js +166 -22
  126. package/lib/web/download_manager.js +32 -13
  127. package/lib/web/firefox_print_service.js +20 -10
  128. package/lib/web/firefoxcom.js +315 -80
  129. package/lib/web/genericcom.js +89 -30
  130. package/lib/web/genericl10n.js +142 -30
  131. package/lib/web/grab_to_pan.js +28 -4
  132. package/lib/web/interfaces.js +170 -47
  133. package/lib/web/overlay_manager.js +235 -85
  134. package/lib/web/password_prompt.js +22 -14
  135. package/lib/web/pdf_attachment_viewer.js +38 -18
  136. package/lib/web/pdf_cursor_tools.js +39 -16
  137. package/lib/web/pdf_document_properties.js +255 -136
  138. package/lib/web/pdf_find_bar.js +84 -40
  139. package/lib/web/pdf_find_controller.js +495 -184
  140. package/lib/web/pdf_find_utils.js +111 -0
  141. package/lib/web/pdf_history.js +190 -53
  142. package/lib/web/pdf_link_service.js +138 -77
  143. package/lib/web/pdf_outline_viewer.js +122 -46
  144. package/lib/web/pdf_page_view.js +191 -67
  145. package/lib/web/pdf_presentation_mode.js +99 -34
  146. package/lib/web/pdf_print_service.js +61 -13
  147. package/lib/web/pdf_rendering_queue.js +28 -9
  148. package/lib/web/pdf_sidebar.js +141 -81
  149. package/lib/web/pdf_sidebar_resizer.js +42 -16
  150. package/lib/web/pdf_single_page_viewer.js +74 -66
  151. package/lib/web/pdf_thumbnail_view.js +104 -33
  152. package/lib/web/pdf_thumbnail_viewer.js +66 -26
  153. package/lib/web/pdf_viewer.component.js +112 -32
  154. package/lib/web/pdf_viewer.js +91 -52
  155. package/lib/web/preferences.js +284 -89
  156. package/lib/web/secondary_toolbar.js +165 -40
  157. package/lib/web/text_layer_builder.js +134 -59
  158. package/lib/web/toolbar.js +78 -43
  159. package/lib/web/ui_utils.js +462 -136
  160. package/lib/web/view_history.js +215 -67
  161. package/lib/web/viewer_compatibility.js +4 -13
  162. package/package.json +5 -4
  163. package/web/pdf_viewer.css +79 -11
  164. package/web/pdf_viewer.js +6107 -3748
  165. package/web/pdf_viewer.js.map +1 -1
  166. package/lib/display/dom_utils.js +0 -309
  167. package/lib/test/unit/dom_utils_spec.js +0 -89
  168. package/lib/test/unit/fonts_spec.js +0 -81
  169. package/lib/web/dom_events.js +0 -137
@@ -2,7 +2,7 @@
2
2
  * @licstart The following is the entire license notice for the
3
3
  * Javascript code in this page
4
4
  *
5
- * Copyright 2017 Mozilla Foundation
5
+ * Copyright 2019 Mozilla Foundation
6
6
  *
7
7
  * Licensed under the Apache License, Version 2.0 (the "License");
8
8
  * you may not use this file except in compliance with the License.
@@ -19,23 +19,31 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.SecondaryToolbar = undefined;
27
+ exports.SecondaryToolbar = void 0;
28
28
 
29
- var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
29
+ var _ui_utils = require("./ui_utils");
30
30
 
31
- var _pdf_cursor_tools = require('./pdf_cursor_tools');
31
+ var _pdf_cursor_tools = require("./pdf_cursor_tools");
32
32
 
33
- var _ui_utils = require('./ui_utils');
33
+ var _pdf_single_page_viewer = require("./pdf_single_page_viewer");
34
34
 
35
35
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
36
36
 
37
- var SecondaryToolbar = function () {
37
+ 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); } }
38
+
39
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
40
+
41
+ var SecondaryToolbar =
42
+ /*#__PURE__*/
43
+ function () {
38
44
  function SecondaryToolbar(options, mainContainer, eventBus) {
45
+ var _this = this;
46
+
39
47
  _classCallCheck(this, SecondaryToolbar);
40
48
 
41
49
  this.toolbar = options.toolbar;
@@ -80,12 +88,58 @@ var SecondaryToolbar = function () {
80
88
  }, {
81
89
  element: options.cursorSelectToolButton,
82
90
  eventName: 'switchcursortool',
83
- eventDetails: { tool: _pdf_cursor_tools.CursorTool.SELECT },
91
+ eventDetails: {
92
+ tool: _pdf_cursor_tools.CursorTool.SELECT
93
+ },
84
94
  close: true
85
95
  }, {
86
96
  element: options.cursorHandToolButton,
87
97
  eventName: 'switchcursortool',
88
- eventDetails: { tool: _pdf_cursor_tools.CursorTool.HAND },
98
+ eventDetails: {
99
+ tool: _pdf_cursor_tools.CursorTool.HAND
100
+ },
101
+ close: true
102
+ }, {
103
+ element: options.scrollVerticalButton,
104
+ eventName: 'switchscrollmode',
105
+ eventDetails: {
106
+ mode: _ui_utils.ScrollMode.VERTICAL
107
+ },
108
+ close: true
109
+ }, {
110
+ element: options.scrollHorizontalButton,
111
+ eventName: 'switchscrollmode',
112
+ eventDetails: {
113
+ mode: _ui_utils.ScrollMode.HORIZONTAL
114
+ },
115
+ close: true
116
+ }, {
117
+ element: options.scrollWrappedButton,
118
+ eventName: 'switchscrollmode',
119
+ eventDetails: {
120
+ mode: _ui_utils.ScrollMode.WRAPPED
121
+ },
122
+ close: true
123
+ }, {
124
+ element: options.spreadNoneButton,
125
+ eventName: 'switchspreadmode',
126
+ eventDetails: {
127
+ mode: _ui_utils.SpreadMode.NONE
128
+ },
129
+ close: true
130
+ }, {
131
+ element: options.spreadOddButton,
132
+ eventName: 'switchspreadmode',
133
+ eventDetails: {
134
+ mode: _ui_utils.SpreadMode.ODD
135
+ },
136
+ close: true
137
+ }, {
138
+ element: options.spreadEvenButton,
139
+ eventName: 'switchspreadmode',
140
+ eventDetails: {
141
+ mode: _ui_utils.SpreadMode.EVEN
142
+ },
89
143
  close: true
90
144
  }, {
91
145
  element: options.documentPropertiesButton,
@@ -104,32 +158,53 @@ var SecondaryToolbar = function () {
104
158
  this.containerHeight = null;
105
159
  this.previousContainerHeight = null;
106
160
  this.reset();
161
+
107
162
  this._bindClickListeners();
163
+
108
164
  this._bindCursorToolsListener(options);
165
+
166
+ this._bindScrollModeListener(options);
167
+
168
+ this._bindSpreadModeListener(options);
169
+
109
170
  this.eventBus.on('resize', this._setMaxHeight.bind(this));
171
+ this.eventBus.on('baseviewerinit', function (evt) {
172
+ if (evt.source instanceof _pdf_single_page_viewer.PDFSinglePageViewer) {
173
+ _this.toolbarButtonContainer.classList.add('hiddenScrollModeButtons', 'hiddenSpreadModeButtons');
174
+ } else {
175
+ _this.toolbarButtonContainer.classList.remove('hiddenScrollModeButtons', 'hiddenSpreadModeButtons');
176
+ }
177
+ });
110
178
  }
111
179
 
112
180
  _createClass(SecondaryToolbar, [{
113
- key: 'setPageNumber',
181
+ key: "setPageNumber",
114
182
  value: function setPageNumber(pageNumber) {
115
183
  this.pageNumber = pageNumber;
184
+
116
185
  this._updateUIState();
117
186
  }
118
187
  }, {
119
- key: 'setPagesCount',
188
+ key: "setPagesCount",
120
189
  value: function setPagesCount(pagesCount) {
121
190
  this.pagesCount = pagesCount;
191
+
122
192
  this._updateUIState();
123
193
  }
124
194
  }, {
125
- key: 'reset',
195
+ key: "reset",
126
196
  value: function reset() {
127
197
  this.pageNumber = 0;
128
198
  this.pagesCount = 0;
199
+
129
200
  this._updateUIState();
201
+
202
+ this.eventBus.dispatch('secondarytoolbarreset', {
203
+ source: this
204
+ });
130
205
  }
131
206
  }, {
132
- key: '_updateUIState',
207
+ key: "_updateUIState",
133
208
  value: function _updateUIState() {
134
209
  this.items.firstPage.disabled = this.pageNumber <= 1;
135
210
  this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;
@@ -137,29 +212,33 @@ var SecondaryToolbar = function () {
137
212
  this.items.pageRotateCcw.disabled = this.pagesCount === 0;
138
213
  }
139
214
  }, {
140
- key: '_bindClickListeners',
215
+ key: "_bindClickListeners",
141
216
  value: function _bindClickListeners() {
142
- var _this = this;
217
+ var _this2 = this;
143
218
 
144
219
  this.toggleButton.addEventListener('click', this.toggle.bind(this));
145
220
 
146
221
  var _loop = function _loop(button) {
147
- var _buttons$button = _this.buttons[button],
148
- element = _buttons$button.element,
149
- eventName = _buttons$button.eventName,
150
- close = _buttons$button.close,
151
- eventDetails = _buttons$button.eventDetails;
152
-
222
+ var _this2$buttons$button = _this2.buttons[button],
223
+ element = _this2$buttons$button.element,
224
+ eventName = _this2$buttons$button.eventName,
225
+ close = _this2$buttons$button.close,
226
+ eventDetails = _this2$buttons$button.eventDetails;
153
227
  element.addEventListener('click', function (evt) {
154
228
  if (eventName !== null) {
155
- var details = { source: _this };
229
+ var details = {
230
+ source: _this2
231
+ };
232
+
156
233
  for (var property in eventDetails) {
157
234
  details[property] = eventDetails[property];
158
235
  }
159
- _this.eventBus.dispatch(eventName, details);
236
+
237
+ _this2.eventBus.dispatch(eventName, details);
160
238
  }
239
+
161
240
  if (close) {
162
- _this.close();
241
+ _this2.close();
163
242
  }
164
243
  });
165
244
  };
@@ -169,44 +248,87 @@ var SecondaryToolbar = function () {
169
248
  }
170
249
  }
171
250
  }, {
172
- key: '_bindCursorToolsListener',
251
+ key: "_bindCursorToolsListener",
173
252
  value: function _bindCursorToolsListener(buttons) {
174
- this.eventBus.on('cursortoolchanged', function (evt) {
175
- buttons.cursorSelectToolButton.classList.remove('toggled');
176
- buttons.cursorHandToolButton.classList.remove('toggled');
177
- switch (evt.tool) {
178
- case _pdf_cursor_tools.CursorTool.SELECT:
179
- buttons.cursorSelectToolButton.classList.add('toggled');
180
- break;
181
- case _pdf_cursor_tools.CursorTool.HAND:
182
- buttons.cursorHandToolButton.classList.add('toggled');
183
- break;
253
+ this.eventBus.on('cursortoolchanged', function (_ref) {
254
+ var tool = _ref.tool;
255
+ buttons.cursorSelectToolButton.classList.toggle('toggled', tool === _pdf_cursor_tools.CursorTool.SELECT);
256
+ buttons.cursorHandToolButton.classList.toggle('toggled', tool === _pdf_cursor_tools.CursorTool.HAND);
257
+ });
258
+ }
259
+ }, {
260
+ key: "_bindScrollModeListener",
261
+ value: function _bindScrollModeListener(buttons) {
262
+ var _this3 = this;
263
+
264
+ function scrollModeChanged(_ref2) {
265
+ var mode = _ref2.mode;
266
+ buttons.scrollVerticalButton.classList.toggle('toggled', mode === _ui_utils.ScrollMode.VERTICAL);
267
+ buttons.scrollHorizontalButton.classList.toggle('toggled', mode === _ui_utils.ScrollMode.HORIZONTAL);
268
+ buttons.scrollWrappedButton.classList.toggle('toggled', mode === _ui_utils.ScrollMode.WRAPPED);
269
+ var isScrollModeHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL;
270
+ buttons.spreadNoneButton.disabled = isScrollModeHorizontal;
271
+ buttons.spreadOddButton.disabled = isScrollModeHorizontal;
272
+ buttons.spreadEvenButton.disabled = isScrollModeHorizontal;
273
+ }
274
+
275
+ this.eventBus.on('scrollmodechanged', scrollModeChanged);
276
+ this.eventBus.on('secondarytoolbarreset', function (evt) {
277
+ if (evt.source === _this3) {
278
+ scrollModeChanged({
279
+ mode: _ui_utils.ScrollMode.VERTICAL
280
+ });
184
281
  }
185
282
  });
186
283
  }
187
284
  }, {
188
- key: 'open',
285
+ key: "_bindSpreadModeListener",
286
+ value: function _bindSpreadModeListener(buttons) {
287
+ var _this4 = this;
288
+
289
+ function spreadModeChanged(_ref3) {
290
+ var mode = _ref3.mode;
291
+ buttons.spreadNoneButton.classList.toggle('toggled', mode === _ui_utils.SpreadMode.NONE);
292
+ buttons.spreadOddButton.classList.toggle('toggled', mode === _ui_utils.SpreadMode.ODD);
293
+ buttons.spreadEvenButton.classList.toggle('toggled', mode === _ui_utils.SpreadMode.EVEN);
294
+ }
295
+
296
+ this.eventBus.on('spreadmodechanged', spreadModeChanged);
297
+ this.eventBus.on('secondarytoolbarreset', function (evt) {
298
+ if (evt.source === _this4) {
299
+ spreadModeChanged({
300
+ mode: _ui_utils.SpreadMode.NONE
301
+ });
302
+ }
303
+ });
304
+ }
305
+ }, {
306
+ key: "open",
189
307
  value: function open() {
190
308
  if (this.opened) {
191
309
  return;
192
310
  }
311
+
193
312
  this.opened = true;
313
+
194
314
  this._setMaxHeight();
315
+
195
316
  this.toggleButton.classList.add('toggled');
196
317
  this.toolbar.classList.remove('hidden');
197
318
  }
198
319
  }, {
199
- key: 'close',
320
+ key: "close",
200
321
  value: function close() {
201
322
  if (!this.opened) {
202
323
  return;
203
324
  }
325
+
204
326
  this.opened = false;
205
327
  this.toolbar.classList.add('hidden');
206
328
  this.toggleButton.classList.remove('toggled');
207
329
  }
208
330
  }, {
209
- key: 'toggle',
331
+ key: "toggle",
210
332
  value: function toggle() {
211
333
  if (this.opened) {
212
334
  this.close();
@@ -215,20 +337,23 @@ var SecondaryToolbar = function () {
215
337
  }
216
338
  }
217
339
  }, {
218
- key: '_setMaxHeight',
340
+ key: "_setMaxHeight",
219
341
  value: function _setMaxHeight() {
220
342
  if (!this.opened) {
221
343
  return;
222
344
  }
345
+
223
346
  this.containerHeight = this.mainContainer.clientHeight;
347
+
224
348
  if (this.containerHeight === this.previousContainerHeight) {
225
349
  return;
226
350
  }
351
+
227
352
  this.toolbarButtonContainer.setAttribute('style', 'max-height: ' + (this.containerHeight - _ui_utils.SCROLLBAR_PADDING) + 'px;');
228
353
  this.previousContainerHeight = this.containerHeight;
229
354
  }
230
355
  }, {
231
- key: 'isOpen',
356
+ key: "isOpen",
232
357
  get: function get() {
233
358
  return this.opened;
234
359
  }