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,17 +19,25 @@
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.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;
27
28
 
28
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
29
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
30
+
31
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
32
+
33
+ function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
34
+
35
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
29
36
 
30
37
  function getFilenameFromContentDispositionHeader(contentDisposition) {
31
38
  var needsEncodingFixup = true;
32
39
  var tmp = toParamRegExp('filename\\*', 'i').exec(contentDisposition);
40
+
33
41
  if (tmp) {
34
42
  tmp = tmp[1];
35
43
  var filename = rfc2616unquote(tmp);
@@ -38,53 +46,75 @@ function getFilenameFromContentDispositionHeader(contentDisposition) {
38
46
  filename = rfc2047decode(filename);
39
47
  return fixupEncoding(filename);
40
48
  }
49
+
41
50
  tmp = rfc2231getparam(contentDisposition);
51
+
42
52
  if (tmp) {
43
53
  var _filename = rfc2047decode(tmp);
54
+
44
55
  return fixupEncoding(_filename);
45
56
  }
57
+
46
58
  tmp = toParamRegExp('filename', 'i').exec(contentDisposition);
59
+
47
60
  if (tmp) {
48
61
  tmp = tmp[1];
62
+
49
63
  var _filename2 = rfc2616unquote(tmp);
64
+
50
65
  _filename2 = rfc2047decode(_filename2);
51
66
  return fixupEncoding(_filename2);
52
67
  }
68
+
53
69
  function toParamRegExp(attributePattern, flags) {
54
70
  return new RegExp('(?:^|;)\\s*' + attributePattern + '\\s*=\\s*' + '(' + '[^";\\s][^;\\s]*' + '|' + '"(?:[^"\\\\]|\\\\"?)+"?' + ')', flags);
55
71
  }
72
+
56
73
  function textdecode(encoding, value) {
57
74
  if (encoding) {
58
- if (!/^[^\x00-\xFF]+$/.test(value)) {
75
+ if (!/^[\x00-\xFF]+$/.test(value)) {
59
76
  return value;
60
77
  }
78
+
61
79
  try {
62
- var decoder = new TextDecoder(encoding, { fatal: true });
63
- var bytes = new Array(value.length);
64
- for (var i = 0; i < value.length; ++i) {
65
- bytes[i] = value.charCodeAt(0);
66
- }
80
+ var decoder = new TextDecoder(encoding, {
81
+ fatal: true
82
+ });
83
+ var bytes = Array.from(value, function (ch) {
84
+ return ch.charCodeAt(0) & 0xFF;
85
+ });
67
86
  value = decoder.decode(new Uint8Array(bytes));
68
87
  needsEncodingFixup = false;
69
88
  } catch (e) {
70
89
  if (/^utf-?8$/i.test(encoding)) {
71
- value = decodeURIComponent(escape(value));
72
- needsEncodingFixup = false;
90
+ try {
91
+ value = decodeURIComponent(escape(value));
92
+ needsEncodingFixup = false;
93
+ } catch (err) {}
73
94
  }
74
95
  }
75
96
  }
97
+
76
98
  return value;
77
99
  }
100
+
78
101
  function fixupEncoding(value) {
79
102
  if (needsEncodingFixup && /[\x80-\xff]/.test(value)) {
80
- return textdecode('utf-8', value);
103
+ value = textdecode('utf-8', value);
104
+
105
+ if (needsEncodingFixup) {
106
+ value = textdecode('iso-8859-1', value);
107
+ }
81
108
  }
109
+
82
110
  return value;
83
111
  }
112
+
84
113
  function rfc2231getparam(contentDisposition) {
85
114
  var matches = [],
86
- match = void 0;
115
+ match;
87
116
  var iter = toParamRegExp('filename\\*((?!0\\d)\\d+)(\\*?)', 'ig');
117
+
88
118
  while ((match = iter.exec(contentDisposition)) !== null) {
89
119
  var _match = match,
90
120
  _match2 = _slicedToArray(_match, 4),
@@ -93,64 +123,84 @@ function getFilenameFromContentDispositionHeader(contentDisposition) {
93
123
  part = _match2[3];
94
124
 
95
125
  n = parseInt(n, 10);
126
+
96
127
  if (n in matches) {
97
128
  if (n === 0) {
98
129
  break;
99
130
  }
131
+
100
132
  continue;
101
133
  }
134
+
102
135
  matches[n] = [quot, part];
103
136
  }
137
+
104
138
  var parts = [];
105
- for (var _n = 0; _n < matches.length; ++_n) {
106
- if (!(_n in matches)) {
139
+
140
+ for (var n = 0; n < matches.length; ++n) {
141
+ if (!(n in matches)) {
107
142
  break;
108
143
  }
109
144
 
110
- var _matches$_n = _slicedToArray(matches[_n], 2),
111
- _quot = _matches$_n[0],
112
- _part = _matches$_n[1];
145
+ var _matches$n = _slicedToArray(matches[n], 2),
146
+ quot = _matches$n[0],
147
+ part = _matches$n[1];
113
148
 
114
- _part = rfc2616unquote(_part);
115
- if (_quot) {
116
- _part = unescape(_part);
117
- if (_n === 0) {
118
- _part = rfc5987decode(_part);
149
+ part = rfc2616unquote(part);
150
+
151
+ if (quot) {
152
+ part = unescape(part);
153
+
154
+ if (n === 0) {
155
+ part = rfc5987decode(part);
119
156
  }
120
157
  }
121
- parts.push(_part);
158
+
159
+ parts.push(part);
122
160
  }
161
+
123
162
  return parts.join('');
124
163
  }
164
+
125
165
  function rfc2616unquote(value) {
126
- if (value.charAt(0) === '"') {
166
+ if (value.startsWith('"')) {
127
167
  var parts = value.slice(1).split('\\"');
168
+
128
169
  for (var i = 0; i < parts.length; ++i) {
129
170
  var quotindex = parts[i].indexOf('"');
171
+
130
172
  if (quotindex !== -1) {
131
173
  parts[i] = parts[i].slice(0, quotindex);
132
174
  parts.length = i + 1;
133
175
  }
176
+
134
177
  parts[i] = parts[i].replace(/\\(.)/g, '$1');
135
178
  }
179
+
136
180
  value = parts.join('"');
137
181
  }
182
+
138
183
  return value;
139
184
  }
185
+
140
186
  function rfc5987decode(extvalue) {
141
187
  var encodingend = extvalue.indexOf('\'');
188
+
142
189
  if (encodingend === -1) {
143
190
  return extvalue;
144
191
  }
192
+
145
193
  var encoding = extvalue.slice(0, encodingend);
146
194
  var langvalue = extvalue.slice(encodingend + 1);
147
195
  var value = langvalue.replace(/^[^']*'/, '');
148
196
  return textdecode(encoding, value);
149
197
  }
198
+
150
199
  function rfc2047decode(value) {
151
- if (value.slice(0, 2) !== '=?' || /[\x00-\x19\x80-\xff]/.test(value)) {
200
+ if (!value.startsWith('=?') || /[\x00-\x19\x80-\xff]/.test(value)) {
152
201
  return value;
153
202
  }
203
+
154
204
  return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (_, charset, encoding, text) {
155
205
  if (encoding === 'q' || encoding === 'Q') {
156
206
  text = text.replace(/_/g, ' ');
@@ -159,13 +209,14 @@ function getFilenameFromContentDispositionHeader(contentDisposition) {
159
209
  });
160
210
  return textdecode(charset, text);
161
211
  }
212
+
162
213
  try {
163
- return atob(text);
164
- } catch (e) {
165
- return text;
166
- }
214
+ text = atob(text);
215
+ } catch (e) {}
216
+
217
+ return textdecode(charset, text);
167
218
  });
168
219
  }
220
+
169
221
  return '';
170
- }
171
- exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;
222
+ }