pdfjs-dist 2.0.943 → 2.1.266

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 (159) hide show
  1. package/bower.json +1 -1
  2. package/build/pdf.js +15329 -11095
  3. package/build/pdf.js.map +1 -1
  4. package/build/pdf.min.js +1 -1
  5. package/build/pdf.worker.js +12497 -4184
  6. package/build/pdf.worker.js.map +1 -1
  7. package/build/pdf.worker.min.js +1 -1
  8. package/image_decoders/pdf.image_decoders.js +3438 -1209
  9. package/image_decoders/pdf.image_decoders.js.map +1 -1
  10. package/image_decoders/pdf.image_decoders.min.js +1 -1
  11. package/lib/core/annotation.js +335 -109
  12. package/lib/core/arithmetic_decoder.js +274 -244
  13. package/lib/core/bidi.js +64 -5
  14. package/lib/core/ccitt.js +172 -17
  15. package/lib/core/ccitt_stream.js +14 -5
  16. package/lib/core/cff_parser.js +304 -28
  17. package/lib/core/charsets.js +4 -3
  18. package/lib/core/chunked_stream.js +379 -149
  19. package/lib/core/cmap.js +210 -40
  20. package/lib/core/colorspace.js +332 -187
  21. package/lib/core/crypto.js +289 -44
  22. package/lib/core/document.js +508 -249
  23. package/lib/core/encodings.js +18 -9
  24. package/lib/core/evaluator.js +657 -119
  25. package/lib/core/font_renderer.js +217 -34
  26. package/lib/core/fonts.js +632 -41
  27. package/lib/core/function.js +252 -26
  28. package/lib/core/glyphlist.js +2 -1
  29. package/lib/core/image.js +124 -27
  30. package/lib/core/jbig2.js +425 -65
  31. package/lib/core/jbig2_stream.js +18 -7
  32. package/lib/core/jpeg_stream.js +24 -8
  33. package/lib/core/jpg.js +208 -16
  34. package/lib/core/jpx.js +395 -5
  35. package/lib/core/jpx_stream.js +17 -5
  36. package/lib/core/metrics.js +3 -3
  37. package/lib/core/murmurhash3.js +23 -5
  38. package/lib/core/obj.js +625 -132
  39. package/lib/core/operator_list.js +104 -3
  40. package/lib/core/parser.js +262 -25
  41. package/lib/core/pattern.js +144 -12
  42. package/lib/core/pdf_manager.js +104 -70
  43. package/lib/core/primitives.js +74 -21
  44. package/lib/core/ps_parser.js +133 -44
  45. package/lib/core/standard_fonts.js +9 -9
  46. package/lib/core/stream.js +283 -31
  47. package/lib/core/type1_parser.js +138 -6
  48. package/lib/core/unicode.js +28 -1
  49. package/lib/core/worker.js +192 -57
  50. package/lib/display/annotation_layer.js +303 -123
  51. package/lib/display/api.js +1073 -574
  52. package/lib/display/api_compatibility.js +4 -1
  53. package/lib/display/canvas.js +314 -18
  54. package/lib/display/content_disposition.js +70 -23
  55. package/lib/display/dom_utils.js +112 -59
  56. package/lib/display/fetch_stream.js +95 -50
  57. package/lib/display/font_loader.js +250 -132
  58. package/lib/display/metadata.js +37 -15
  59. package/lib/display/network.js +123 -34
  60. package/lib/display/network_utils.js +23 -10
  61. package/lib/display/node_stream.js +162 -65
  62. package/lib/display/pattern_helper.js +57 -6
  63. package/lib/display/svg.js +194 -18
  64. package/lib/display/text_layer.js +128 -14
  65. package/lib/display/transport_stream.js +83 -27
  66. package/lib/display/webgl.js +63 -17
  67. package/lib/display/worker_options.js +4 -3
  68. package/lib/display/xml_parser.js +162 -52
  69. package/lib/examples/node/domstubs.js +56 -3
  70. package/lib/pdf.js +15 -2
  71. package/lib/pdf.worker.js +4 -2
  72. package/lib/shared/compatibility.js +129 -26
  73. package/lib/shared/global_scope.js +1 -1
  74. package/lib/shared/is_node.js +3 -3
  75. package/lib/shared/message_handler.js +103 -45
  76. package/lib/shared/streams_polyfill.js +20 -16
  77. package/lib/shared/url_polyfill.js +8 -2
  78. package/lib/shared/util.js +246 -84
  79. package/lib/test/unit/annotation_spec.js +99 -73
  80. package/lib/test/unit/api_spec.js +347 -113
  81. package/lib/test/unit/bidi_spec.js +6 -6
  82. package/lib/test/unit/cff_parser_spec.js +17 -5
  83. package/lib/test/unit/clitests_helper.js +7 -8
  84. package/lib/test/unit/cmap_spec.js +79 -25
  85. package/lib/test/unit/colorspace_spec.js +65 -18
  86. package/lib/test/unit/crypto_spec.js +16 -4
  87. package/lib/test/unit/custom_spec.js +40 -52
  88. package/lib/test/unit/display_svg_spec.js +32 -16
  89. package/lib/test/unit/document_spec.js +2 -2
  90. package/lib/test/unit/dom_utils_spec.js +8 -8
  91. package/lib/test/unit/encodings_spec.js +24 -44
  92. package/lib/test/unit/evaluator_spec.js +15 -8
  93. package/lib/test/unit/function_spec.js +16 -4
  94. package/lib/test/unit/jasmine-boot.js +29 -16
  95. package/lib/test/unit/message_handler_spec.js +19 -6
  96. package/lib/test/unit/metadata_spec.js +64 -11
  97. package/lib/test/unit/murmurhash3_spec.js +2 -2
  98. package/lib/test/unit/network_spec.js +19 -4
  99. package/lib/test/unit/network_utils_spec.js +6 -4
  100. package/lib/test/unit/node_stream_spec.js +50 -26
  101. package/lib/test/unit/parser_spec.js +13 -29
  102. package/lib/test/unit/pdf_find_controller_spec.js +144 -32
  103. package/lib/test/unit/pdf_find_utils_spec.js +10 -9
  104. package/lib/test/unit/pdf_history_spec.js +20 -8
  105. package/lib/test/unit/primitives_spec.js +23 -3
  106. package/lib/test/unit/stream_spec.js +8 -3
  107. package/lib/test/unit/test_utils.js +89 -26
  108. package/lib/test/unit/testreporter.js +19 -1
  109. package/lib/test/unit/type1_parser_spec.js +7 -5
  110. package/lib/test/unit/ui_utils_spec.js +162 -38
  111. package/lib/test/unit/unicode_spec.js +13 -10
  112. package/lib/test/unit/util_spec.js +89 -9
  113. package/lib/web/annotation_layer_builder.js +38 -21
  114. package/lib/web/app.js +610 -245
  115. package/lib/web/app_options.js +54 -34
  116. package/lib/web/base_viewer.js +359 -162
  117. package/lib/web/chromecom.js +159 -80
  118. package/lib/web/debugger.js +161 -17
  119. package/lib/web/download_manager.js +29 -11
  120. package/lib/web/firefox_print_service.js +16 -8
  121. package/lib/web/firefoxcom.js +127 -91
  122. package/lib/web/genericcom.js +50 -31
  123. package/lib/web/genericl10n.js +46 -34
  124. package/lib/web/grab_to_pan.js +25 -3
  125. package/lib/web/interfaces.js +108 -61
  126. package/lib/web/overlay_manager.js +67 -45
  127. package/lib/web/password_prompt.js +20 -12
  128. package/lib/web/pdf_attachment_viewer.js +37 -17
  129. package/lib/web/pdf_cursor_tools.js +38 -15
  130. package/lib/web/pdf_document_properties.js +65 -24
  131. package/lib/web/pdf_find_bar.js +48 -20
  132. package/lib/web/pdf_find_controller.js +290 -89
  133. package/lib/web/pdf_find_utils.js +19 -3
  134. package/lib/web/pdf_history.js +186 -49
  135. package/lib/web/pdf_link_service.js +127 -52
  136. package/lib/web/pdf_outline_viewer.js +71 -21
  137. package/lib/web/pdf_page_view.js +188 -63
  138. package/lib/web/pdf_presentation_mode.js +98 -33
  139. package/lib/web/pdf_print_service.js +54 -10
  140. package/lib/web/pdf_rendering_queue.js +26 -4
  141. package/lib/web/pdf_sidebar.js +116 -62
  142. package/lib/web/pdf_sidebar_resizer.js +41 -15
  143. package/lib/web/pdf_single_page_viewer.js +65 -68
  144. package/lib/web/pdf_thumbnail_view.js +102 -31
  145. package/lib/web/pdf_thumbnail_viewer.js +62 -22
  146. package/lib/web/pdf_viewer.component.js +111 -31
  147. package/lib/web/pdf_viewer.js +80 -60
  148. package/lib/web/preferences.js +61 -39
  149. package/lib/web/secondary_toolbar.js +101 -82
  150. package/lib/web/text_layer_builder.js +124 -69
  151. package/lib/web/toolbar.js +67 -27
  152. package/lib/web/ui_utils.js +284 -128
  153. package/lib/web/view_history.js +75 -51
  154. package/lib/web/viewer_compatibility.js +2 -1
  155. package/package.json +1 -1
  156. package/web/pdf_viewer.css +1 -1
  157. package/web/pdf_viewer.js +2200 -973
  158. package/web/pdf_viewer.js.map +1 -1
  159. package/lib/web/dom_events.js +0 -140
@@ -19,169 +19,212 @@
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.FontLoader = exports.FontFaceObject = undefined;
27
+ exports.FontLoader = exports.FontFaceObject = 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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
30
30
 
31
- var _util = require('../shared/util');
31
+ var _util = require("../shared/util");
32
32
 
33
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
33
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34
34
 
35
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
35
+ 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); }
36
+
37
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
38
+
39
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
40
+
41
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
42
+
43
+ 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); }
44
+
45
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
46
+
47
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
48
+
49
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
36
50
 
37
51
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
38
52
 
39
- var BaseFontLoader = function () {
40
- function BaseFontLoader(docId) {
53
+ 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); } }
54
+
55
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
56
+
57
+ var BaseFontLoader =
58
+ /*#__PURE__*/
59
+ function () {
60
+ function BaseFontLoader(_ref) {
61
+ var docId = _ref.docId,
62
+ onUnsupportedFeature = _ref.onUnsupportedFeature;
63
+
41
64
  _classCallCheck(this, BaseFontLoader);
42
65
 
43
66
  if (this.constructor === BaseFontLoader) {
44
67
  (0, _util.unreachable)('Cannot initialize BaseFontLoader.');
45
68
  }
69
+
46
70
  this.docId = docId;
71
+ this._onUnsupportedFeature = onUnsupportedFeature;
47
72
  this.nativeFontFaces = [];
48
73
  this.styleElement = null;
49
- this.loadingContext = {
50
- requests: [],
51
- nextRequestId: 0
52
- };
53
74
  }
54
75
 
55
76
  _createClass(BaseFontLoader, [{
56
- key: 'addNativeFontFace',
77
+ key: "addNativeFontFace",
57
78
  value: function addNativeFontFace(nativeFontFace) {
58
79
  this.nativeFontFaces.push(nativeFontFace);
59
80
  document.fonts.add(nativeFontFace);
60
81
  }
61
82
  }, {
62
- key: 'insertRule',
83
+ key: "insertRule",
63
84
  value: function insertRule(rule) {
64
85
  var styleElement = this.styleElement;
86
+
65
87
  if (!styleElement) {
66
88
  styleElement = this.styleElement = document.createElement('style');
67
- styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId;
89
+ styleElement.id = "PDFJS_FONT_STYLE_TAG_".concat(this.docId);
68
90
  document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement);
69
91
  }
92
+
70
93
  var styleSheet = styleElement.sheet;
71
94
  styleSheet.insertRule(rule, styleSheet.cssRules.length);
72
95
  }
73
96
  }, {
74
- key: 'clear',
97
+ key: "clear",
75
98
  value: function clear() {
76
99
  this.nativeFontFaces.forEach(function (nativeFontFace) {
77
100
  document.fonts.delete(nativeFontFace);
78
101
  });
79
102
  this.nativeFontFaces.length = 0;
103
+
80
104
  if (this.styleElement) {
81
105
  this.styleElement.remove();
82
106
  this.styleElement = null;
83
107
  }
84
108
  }
85
109
  }, {
86
- key: 'bind',
87
- value: function bind(fonts, callback) {
88
- var rules = [];
89
- var fontsToLoad = [];
90
- var fontLoadPromises = [];
91
- var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) {
92
- return nativeFontFace.loaded.catch(function (reason) {
93
- (0, _util.warn)('Failed to load font "' + nativeFontFace.family + '": ' + reason);
94
- });
95
- };
96
- var _iteratorNormalCompletion = true;
97
- var _didIteratorError = false;
98
- var _iteratorError = undefined;
110
+ key: "bind",
111
+ value: function () {
112
+ var _bind = _asyncToGenerator(
113
+ /*#__PURE__*/
114
+ _regenerator.default.mark(function _callee(font) {
115
+ var _this = this;
99
116
 
100
- try {
101
- for (var _iterator = fonts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
102
- var font = _step.value;
117
+ var nativeFontFace, rule;
118
+ return _regenerator.default.wrap(function _callee$(_context) {
119
+ while (1) {
120
+ switch (_context.prev = _context.next) {
121
+ case 0:
122
+ if (!(font.attached || font.missingFile)) {
123
+ _context.next = 2;
124
+ break;
125
+ }
103
126
 
104
- if (font.attached || font.missingFile) {
105
- continue;
106
- }
107
- font.attached = true;
108
- if (this.isFontLoadingAPISupported) {
109
- var nativeFontFace = font.createNativeFontFace();
110
- if (nativeFontFace) {
111
- this.addNativeFontFace(nativeFontFace);
112
- fontLoadPromises.push(getNativeFontPromise(nativeFontFace));
113
- }
114
- } else {
115
- var rule = font.createFontFaceRule();
116
- if (rule) {
117
- this.insertRule(rule);
118
- rules.push(rule);
119
- fontsToLoad.push(font);
127
+ return _context.abrupt("return");
128
+
129
+ case 2:
130
+ font.attached = true;
131
+
132
+ if (!this.isFontLoadingAPISupported) {
133
+ _context.next = 19;
134
+ break;
135
+ }
136
+
137
+ nativeFontFace = font.createNativeFontFace();
138
+
139
+ if (!nativeFontFace) {
140
+ _context.next = 18;
141
+ break;
142
+ }
143
+
144
+ this.addNativeFontFace(nativeFontFace);
145
+ _context.prev = 7;
146
+ _context.next = 10;
147
+ return nativeFontFace.loaded;
148
+
149
+ case 10:
150
+ _context.next = 18;
151
+ break;
152
+
153
+ case 12:
154
+ _context.prev = 12;
155
+ _context.t0 = _context["catch"](7);
156
+
157
+ this._onUnsupportedFeature({
158
+ featureId: _util.UNSUPPORTED_FEATURES.font
159
+ });
160
+
161
+ (0, _util.warn)("Failed to load font '".concat(nativeFontFace.family, "': '").concat(_context.t0, "'."));
162
+ font.disableFontFace = true;
163
+ throw _context.t0;
164
+
165
+ case 18:
166
+ return _context.abrupt("return");
167
+
168
+ case 19:
169
+ rule = font.createFontFaceRule();
170
+
171
+ if (!rule) {
172
+ _context.next = 25;
173
+ break;
174
+ }
175
+
176
+ this.insertRule(rule);
177
+
178
+ if (!this.isSyncFontLoadingSupported) {
179
+ _context.next = 24;
180
+ break;
181
+ }
182
+
183
+ return _context.abrupt("return");
184
+
185
+ case 24:
186
+ return _context.abrupt("return", new Promise(function (resolve) {
187
+ var request = _this._queueLoadingCallback(resolve);
188
+
189
+ _this._prepareFontLoadEvent([rule], [font], request);
190
+ }));
191
+
192
+ case 25:
193
+ case "end":
194
+ return _context.stop();
120
195
  }
121
196
  }
122
- }
123
- } catch (err) {
124
- _didIteratorError = true;
125
- _iteratorError = err;
126
- } finally {
127
- try {
128
- if (!_iteratorNormalCompletion && _iterator.return) {
129
- _iterator.return();
130
- }
131
- } finally {
132
- if (_didIteratorError) {
133
- throw _iteratorError;
134
- }
135
- }
136
- }
197
+ }, _callee, this, [[7, 12]]);
198
+ }));
137
199
 
138
- var request = this._queueLoadingCallback(callback);
139
- if (this.isFontLoadingAPISupported) {
140
- Promise.all(fontLoadPromises).then(request.complete);
141
- } else if (rules.length > 0 && !this.isSyncFontLoadingSupported) {
142
- this._prepareFontLoadEvent(rules, fontsToLoad, request);
143
- } else {
144
- request.complete();
200
+ function bind(_x) {
201
+ return _bind.apply(this, arguments);
145
202
  }
146
- }
203
+
204
+ return bind;
205
+ }()
147
206
  }, {
148
- key: '_queueLoadingCallback',
207
+ key: "_queueLoadingCallback",
149
208
  value: function _queueLoadingCallback(callback) {
150
- function completeRequest() {
151
- (0, _util.assert)(!request.done, 'completeRequest() cannot be called twice.');
152
- request.done = true;
153
- while (context.requests.length > 0 && context.requests[0].done) {
154
- var otherRequest = context.requests.shift();
155
- setTimeout(otherRequest.callback, 0);
156
- }
157
- }
158
- var context = this.loadingContext;
159
- var request = {
160
- id: 'pdfjs-font-loading-' + context.nextRequestId++,
161
- done: false,
162
- complete: completeRequest,
163
- callback: callback
164
- };
165
- context.requests.push(request);
166
- return request;
209
+ (0, _util.unreachable)('Abstract method `_queueLoadingCallback`.');
167
210
  }
168
211
  }, {
169
- key: '_prepareFontLoadEvent',
212
+ key: "_prepareFontLoadEvent",
170
213
  value: function _prepareFontLoadEvent(rules, fontsToLoad, request) {
171
214
  (0, _util.unreachable)('Abstract method `_prepareFontLoadEvent`.');
172
215
  }
173
216
  }, {
174
- key: 'isFontLoadingAPISupported',
217
+ key: "isFontLoadingAPISupported",
175
218
  get: function get() {
176
219
  (0, _util.unreachable)('Abstract method `isFontLoadingAPISupported`.');
177
220
  }
178
221
  }, {
179
- key: 'isSyncFontLoadingSupported',
222
+ key: "isSyncFontLoadingSupported",
180
223
  get: function get() {
181
224
  (0, _util.unreachable)('Abstract method `isSyncFontLoadingSupported`.');
182
225
  }
183
226
  }, {
184
- key: '_loadTestFont',
227
+ key: "_loadTestFont",
185
228
  get: function get() {
186
229
  (0, _util.unreachable)('Abstract method `_loadTestFont`.');
187
230
  }
@@ -190,84 +233,129 @@ var BaseFontLoader = function () {
190
233
  return BaseFontLoader;
191
234
  }();
192
235
 
193
- var FontLoader = void 0;
236
+ var FontLoader;
237
+ exports.FontLoader = FontLoader;
194
238
  {
195
- exports.FontLoader = FontLoader = function (_BaseFontLoader) {
239
+ exports.FontLoader = FontLoader =
240
+ /*#__PURE__*/
241
+ function (_BaseFontLoader) {
196
242
  _inherits(GenericFontLoader, _BaseFontLoader);
197
243
 
198
244
  function GenericFontLoader(docId) {
199
- _classCallCheck(this, GenericFontLoader);
245
+ var _this2;
200
246
 
201
- var _this = _possibleConstructorReturn(this, (GenericFontLoader.__proto__ || Object.getPrototypeOf(GenericFontLoader)).call(this, docId));
247
+ _classCallCheck(this, GenericFontLoader);
202
248
 
203
- _this.loadTestFontId = 0;
204
- return _this;
249
+ _this2 = _possibleConstructorReturn(this, _getPrototypeOf(GenericFontLoader).call(this, docId));
250
+ _this2.loadingContext = {
251
+ requests: [],
252
+ nextRequestId: 0
253
+ };
254
+ _this2.loadTestFontId = 0;
255
+ return _this2;
205
256
  }
206
257
 
207
258
  _createClass(GenericFontLoader, [{
208
- key: '_prepareFontLoadEvent',
259
+ key: "_queueLoadingCallback",
260
+ value: function _queueLoadingCallback(callback) {
261
+ function completeRequest() {
262
+ (0, _util.assert)(!request.done, 'completeRequest() cannot be called twice.');
263
+ request.done = true;
264
+
265
+ while (context.requests.length > 0 && context.requests[0].done) {
266
+ var otherRequest = context.requests.shift();
267
+ setTimeout(otherRequest.callback, 0);
268
+ }
269
+ }
270
+
271
+ var context = this.loadingContext;
272
+ var request = {
273
+ id: "pdfjs-font-loading-".concat(context.nextRequestId++),
274
+ done: false,
275
+ complete: completeRequest,
276
+ callback: callback
277
+ };
278
+ context.requests.push(request);
279
+ return request;
280
+ }
281
+ }, {
282
+ key: "_prepareFontLoadEvent",
209
283
  value: function _prepareFontLoadEvent(rules, fonts, request) {
210
284
  function int32(data, offset) {
211
285
  return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
212
286
  }
287
+
213
288
  function spliceString(s, offset, remove, insert) {
214
289
  var chunk1 = s.substring(0, offset);
215
290
  var chunk2 = s.substring(offset + remove);
216
291
  return chunk1 + insert + chunk2;
217
292
  }
218
- var i = void 0,
219
- ii = void 0;
293
+
294
+ var i, ii;
220
295
  var canvas = document.createElement('canvas');
221
296
  canvas.width = 1;
222
297
  canvas.height = 1;
223
298
  var ctx = canvas.getContext('2d');
224
299
  var called = 0;
300
+
225
301
  function isFontReady(name, callback) {
226
302
  called++;
303
+
227
304
  if (called > 30) {
228
305
  (0, _util.warn)('Load test font never loaded.');
229
306
  callback();
230
307
  return;
231
308
  }
309
+
232
310
  ctx.font = '30px ' + name;
233
311
  ctx.fillText('.', 0, 20);
234
312
  var imageData = ctx.getImageData(0, 0, 1, 1);
313
+
235
314
  if (imageData.data[3] > 0) {
236
315
  callback();
237
316
  return;
238
317
  }
318
+
239
319
  setTimeout(isFontReady.bind(null, name, callback));
240
320
  }
241
- var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++;
321
+
322
+ var loadTestFontId = "lt".concat(Date.now()).concat(this.loadTestFontId++);
242
323
  var data = this._loadTestFont;
243
324
  var COMMENT_OFFSET = 976;
244
325
  data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
245
326
  var CFF_CHECKSUM_OFFSET = 16;
246
327
  var XXXX_VALUE = 0x58585858;
247
328
  var checksum = int32(data, CFF_CHECKSUM_OFFSET);
329
+
248
330
  for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
249
331
  checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
250
332
  }
333
+
251
334
  if (i < loadTestFontId.length) {
252
335
  checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0;
253
336
  }
337
+
254
338
  data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
255
- var url = 'url(data:font/opentype;base64,' + btoa(data) + ');';
256
- var rule = '@font-face {font-family:"' + loadTestFontId + '";src:' + url + '}';
339
+ var url = "url(data:font/opentype;base64,".concat(btoa(data), ");");
340
+ var rule = "@font-face {font-family:\"".concat(loadTestFontId, "\";src:").concat(url, "}");
257
341
  this.insertRule(rule);
258
342
  var names = [];
343
+
259
344
  for (i = 0, ii = fonts.length; i < ii; i++) {
260
345
  names.push(fonts[i].loadedName);
261
346
  }
347
+
262
348
  names.push(loadTestFontId);
263
349
  var div = document.createElement('div');
264
350
  div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;');
351
+
265
352
  for (i = 0, ii = names.length; i < ii; ++i) {
266
353
  var span = document.createElement('span');
267
354
  span.textContent = 'Hi';
268
355
  span.style.fontFamily = names[i];
269
356
  div.appendChild(span);
270
357
  }
358
+
271
359
  document.body.appendChild(div);
272
360
  isFontReady(loadTestFontId, function () {
273
361
  document.body.removeChild(div);
@@ -275,37 +363,44 @@ var FontLoader = void 0;
275
363
  });
276
364
  }
277
365
  }, {
278
- key: 'isFontLoadingAPISupported',
366
+ key: "isFontLoadingAPISupported",
279
367
  get: function get() {
280
368
  var supported = typeof document !== 'undefined' && !!document.fonts;
369
+
281
370
  if (supported && typeof navigator !== 'undefined') {
282
371
  var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
372
+
283
373
  if (m && m[1] < 63) {
284
374
  supported = false;
285
375
  }
286
376
  }
377
+
287
378
  return (0, _util.shadow)(this, 'isFontLoadingAPISupported', supported);
288
379
  }
289
380
  }, {
290
- key: 'isSyncFontLoadingSupported',
381
+ key: "isSyncFontLoadingSupported",
291
382
  get: function get() {
292
383
  var supported = false;
384
+
293
385
  if (typeof navigator === 'undefined') {
294
386
  supported = true;
295
387
  } else {
296
388
  var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
389
+
297
390
  if (m && m[1] >= 14) {
298
391
  supported = true;
299
392
  }
300
393
  }
394
+
301
395
  return (0, _util.shadow)(this, 'isSyncFontLoadingSupported', supported);
302
396
  }
303
397
  }, {
304
- key: '_loadTestFont',
398
+ key: "_loadTestFont",
305
399
  get: function get() {
306
400
  var getLoadTestFont = function getLoadTestFont() {
307
401
  return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA' + 'FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA' + 'ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA' + 'AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1' + 'AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD' + '6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM' + 'AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D' + 'IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA' + 'AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA' + 'AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB' + 'AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY' + 'AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA' + 'AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA' + 'AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC' + 'AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3' + 'Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj' + 'FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==');
308
402
  };
403
+
309
404
  return (0, _util.shadow)(this, '_loadTestFont', getLoadTestFont());
310
405
  }
311
406
  }]);
@@ -317,27 +412,32 @@ var IsEvalSupportedCached = {
317
412
  get value() {
318
413
  return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
319
414
  }
415
+
320
416
  };
321
417
 
322
- var FontFaceObject = function () {
323
- function FontFaceObject(translatedData, _ref) {
324
- var _ref$isEvalSupported = _ref.isEvalSupported,
325
- isEvalSupported = _ref$isEvalSupported === undefined ? true : _ref$isEvalSupported,
326
- _ref$disableFontFace = _ref.disableFontFace,
327
- disableFontFace = _ref$disableFontFace === undefined ? false : _ref$disableFontFace,
328
- _ref$ignoreErrors = _ref.ignoreErrors,
329
- ignoreErrors = _ref$ignoreErrors === undefined ? false : _ref$ignoreErrors,
330
- _ref$onUnsupportedFea = _ref.onUnsupportedFeature,
331
- onUnsupportedFeature = _ref$onUnsupportedFea === undefined ? null : _ref$onUnsupportedFea,
332
- _ref$fontRegistry = _ref.fontRegistry,
333
- fontRegistry = _ref$fontRegistry === undefined ? null : _ref$fontRegistry;
418
+ var FontFaceObject =
419
+ /*#__PURE__*/
420
+ function () {
421
+ function FontFaceObject(translatedData, _ref2) {
422
+ var _ref2$isEvalSupported = _ref2.isEvalSupported,
423
+ isEvalSupported = _ref2$isEvalSupported === void 0 ? true : _ref2$isEvalSupported,
424
+ _ref2$disableFontFace = _ref2.disableFontFace,
425
+ disableFontFace = _ref2$disableFontFace === void 0 ? false : _ref2$disableFontFace,
426
+ _ref2$ignoreErrors = _ref2.ignoreErrors,
427
+ ignoreErrors = _ref2$ignoreErrors === void 0 ? false : _ref2$ignoreErrors,
428
+ _ref2$onUnsupportedFe = _ref2.onUnsupportedFeature,
429
+ onUnsupportedFeature = _ref2$onUnsupportedFe === void 0 ? null : _ref2$onUnsupportedFe,
430
+ _ref2$fontRegistry = _ref2.fontRegistry,
431
+ fontRegistry = _ref2$fontRegistry === void 0 ? null : _ref2$fontRegistry;
334
432
 
335
433
  _classCallCheck(this, FontFaceObject);
336
434
 
337
435
  this.compiledGlyphs = Object.create(null);
436
+
338
437
  for (var i in translatedData) {
339
438
  this[i] = translatedData[i];
340
439
  }
440
+
341
441
  this.isEvalSupported = isEvalSupported !== false;
342
442
  this.disableFontFace = disableFontFace === true;
343
443
  this.ignoreErrors = ignoreErrors === true;
@@ -346,71 +446,90 @@ var FontFaceObject = function () {
346
446
  }
347
447
 
348
448
  _createClass(FontFaceObject, [{
349
- key: 'createNativeFontFace',
449
+ key: "createNativeFontFace",
350
450
  value: function createNativeFontFace() {
351
451
  if (!this.data || this.disableFontFace) {
352
452
  return null;
353
453
  }
454
+
354
455
  var nativeFontFace = new FontFace(this.loadedName, this.data, {});
456
+
355
457
  if (this.fontRegistry) {
356
458
  this.fontRegistry.registerFont(this);
357
459
  }
460
+
358
461
  return nativeFontFace;
359
462
  }
360
463
  }, {
361
- key: 'createFontFaceRule',
464
+ key: "createFontFaceRule",
362
465
  value: function createFontFaceRule() {
363
466
  if (!this.data || this.disableFontFace) {
364
467
  return null;
365
468
  }
469
+
366
470
  var data = (0, _util.bytesToString)(new Uint8Array(this.data));
367
- var url = 'url(data:' + this.mimetype + ';base64,' + btoa(data) + ');';
368
- var rule = '@font-face {font-family:"' + this.loadedName + '";src:' + url + '}';
471
+ var url = "url(data:".concat(this.mimetype, ";base64,").concat(btoa(data), ");");
472
+ var rule = "@font-face {font-family:\"".concat(this.loadedName, "\";src:").concat(url, "}");
473
+
369
474
  if (this.fontRegistry) {
370
475
  this.fontRegistry.registerFont(this, url);
371
476
  }
477
+
372
478
  return rule;
373
479
  }
374
480
  }, {
375
- key: 'getPathGenerator',
481
+ key: "getPathGenerator",
376
482
  value: function getPathGenerator(objs, character) {
377
483
  if (this.compiledGlyphs[character] !== undefined) {
378
484
  return this.compiledGlyphs[character];
379
485
  }
380
- var cmds = void 0,
381
- current = void 0;
486
+
487
+ var cmds, current;
488
+
382
489
  try {
383
490
  cmds = objs.get(this.loadedName + '_path_' + character);
384
491
  } catch (ex) {
385
492
  if (!this.ignoreErrors) {
386
493
  throw ex;
387
494
  }
495
+
388
496
  if (this._onUnsupportedFeature) {
389
- this._onUnsupportedFeature({ featureId: _util.UNSUPPORTED_FEATURES.font });
497
+ this._onUnsupportedFeature({
498
+ featureId: _util.UNSUPPORTED_FEATURES.font
499
+ });
390
500
  }
391
- (0, _util.warn)('getPathGenerator - ignoring character: "' + ex + '".');
501
+
502
+ (0, _util.warn)("getPathGenerator - ignoring character: \"".concat(ex, "\"."));
392
503
  return this.compiledGlyphs[character] = function (c, size) {};
393
504
  }
505
+
394
506
  if (this.isEvalSupported && IsEvalSupportedCached.value) {
395
- var args = void 0,
507
+ var args,
396
508
  js = '';
509
+
397
510
  for (var i = 0, ii = cmds.length; i < ii; i++) {
398
511
  current = cmds[i];
512
+
399
513
  if (current.args !== undefined) {
400
514
  args = current.args.join(',');
401
515
  } else {
402
516
  args = '';
403
517
  }
518
+
404
519
  js += 'c.' + current.cmd + '(' + args + ');\n';
405
520
  }
521
+
406
522
  return this.compiledGlyphs[character] = new Function('c', 'size', js);
407
523
  }
524
+
408
525
  return this.compiledGlyphs[character] = function (c, size) {
409
526
  for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) {
410
527
  current = cmds[_i];
528
+
411
529
  if (current.cmd === 'scale') {
412
530
  current.args = [size, -size];
413
531
  }
532
+
414
533
  c[current.cmd].apply(c, current.args);
415
534
  }
416
535
  };
@@ -420,5 +539,4 @@ var FontFaceObject = function () {
420
539
  return FontFaceObject;
421
540
  }();
422
541
 
423
- exports.FontFaceObject = FontFaceObject;
424
- exports.FontLoader = FontLoader;
542
+ exports.FontFaceObject = FontFaceObject;