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.
- package/bower.json +1 -1
- package/build/pdf.js +15329 -11095
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +1 -1
- package/build/pdf.worker.js +12497 -4184
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +1 -1
- package/image_decoders/pdf.image_decoders.js +3438 -1209
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +1 -1
- package/lib/core/annotation.js +335 -109
- package/lib/core/arithmetic_decoder.js +274 -244
- package/lib/core/bidi.js +64 -5
- package/lib/core/ccitt.js +172 -17
- package/lib/core/ccitt_stream.js +14 -5
- package/lib/core/cff_parser.js +304 -28
- package/lib/core/charsets.js +4 -3
- package/lib/core/chunked_stream.js +379 -149
- package/lib/core/cmap.js +210 -40
- package/lib/core/colorspace.js +332 -187
- package/lib/core/crypto.js +289 -44
- package/lib/core/document.js +508 -249
- package/lib/core/encodings.js +18 -9
- package/lib/core/evaluator.js +657 -119
- package/lib/core/font_renderer.js +217 -34
- package/lib/core/fonts.js +632 -41
- package/lib/core/function.js +252 -26
- package/lib/core/glyphlist.js +2 -1
- package/lib/core/image.js +124 -27
- package/lib/core/jbig2.js +425 -65
- package/lib/core/jbig2_stream.js +18 -7
- package/lib/core/jpeg_stream.js +24 -8
- package/lib/core/jpg.js +208 -16
- package/lib/core/jpx.js +395 -5
- package/lib/core/jpx_stream.js +17 -5
- package/lib/core/metrics.js +3 -3
- package/lib/core/murmurhash3.js +23 -5
- package/lib/core/obj.js +625 -132
- package/lib/core/operator_list.js +104 -3
- package/lib/core/parser.js +262 -25
- package/lib/core/pattern.js +144 -12
- package/lib/core/pdf_manager.js +104 -70
- package/lib/core/primitives.js +74 -21
- package/lib/core/ps_parser.js +133 -44
- package/lib/core/standard_fonts.js +9 -9
- package/lib/core/stream.js +283 -31
- package/lib/core/type1_parser.js +138 -6
- package/lib/core/unicode.js +28 -1
- package/lib/core/worker.js +192 -57
- package/lib/display/annotation_layer.js +303 -123
- package/lib/display/api.js +1073 -574
- package/lib/display/api_compatibility.js +4 -1
- package/lib/display/canvas.js +314 -18
- package/lib/display/content_disposition.js +70 -23
- package/lib/display/dom_utils.js +112 -59
- package/lib/display/fetch_stream.js +95 -50
- package/lib/display/font_loader.js +250 -132
- package/lib/display/metadata.js +37 -15
- package/lib/display/network.js +123 -34
- package/lib/display/network_utils.js +23 -10
- package/lib/display/node_stream.js +162 -65
- package/lib/display/pattern_helper.js +57 -6
- package/lib/display/svg.js +194 -18
- package/lib/display/text_layer.js +128 -14
- package/lib/display/transport_stream.js +83 -27
- package/lib/display/webgl.js +63 -17
- package/lib/display/worker_options.js +4 -3
- package/lib/display/xml_parser.js +162 -52
- package/lib/examples/node/domstubs.js +56 -3
- package/lib/pdf.js +15 -2
- package/lib/pdf.worker.js +4 -2
- package/lib/shared/compatibility.js +129 -26
- package/lib/shared/global_scope.js +1 -1
- package/lib/shared/is_node.js +3 -3
- package/lib/shared/message_handler.js +103 -45
- package/lib/shared/streams_polyfill.js +20 -16
- package/lib/shared/url_polyfill.js +8 -2
- package/lib/shared/util.js +246 -84
- package/lib/test/unit/annotation_spec.js +99 -73
- package/lib/test/unit/api_spec.js +347 -113
- package/lib/test/unit/bidi_spec.js +6 -6
- package/lib/test/unit/cff_parser_spec.js +17 -5
- package/lib/test/unit/clitests_helper.js +7 -8
- package/lib/test/unit/cmap_spec.js +79 -25
- package/lib/test/unit/colorspace_spec.js +65 -18
- package/lib/test/unit/crypto_spec.js +16 -4
- package/lib/test/unit/custom_spec.js +40 -52
- package/lib/test/unit/display_svg_spec.js +32 -16
- package/lib/test/unit/document_spec.js +2 -2
- package/lib/test/unit/dom_utils_spec.js +8 -8
- package/lib/test/unit/encodings_spec.js +24 -44
- package/lib/test/unit/evaluator_spec.js +15 -8
- package/lib/test/unit/function_spec.js +16 -4
- package/lib/test/unit/jasmine-boot.js +29 -16
- package/lib/test/unit/message_handler_spec.js +19 -6
- package/lib/test/unit/metadata_spec.js +64 -11
- package/lib/test/unit/murmurhash3_spec.js +2 -2
- package/lib/test/unit/network_spec.js +19 -4
- package/lib/test/unit/network_utils_spec.js +6 -4
- package/lib/test/unit/node_stream_spec.js +50 -26
- package/lib/test/unit/parser_spec.js +13 -29
- package/lib/test/unit/pdf_find_controller_spec.js +144 -32
- package/lib/test/unit/pdf_find_utils_spec.js +10 -9
- package/lib/test/unit/pdf_history_spec.js +20 -8
- package/lib/test/unit/primitives_spec.js +23 -3
- package/lib/test/unit/stream_spec.js +8 -3
- package/lib/test/unit/test_utils.js +89 -26
- package/lib/test/unit/testreporter.js +19 -1
- package/lib/test/unit/type1_parser_spec.js +7 -5
- package/lib/test/unit/ui_utils_spec.js +162 -38
- package/lib/test/unit/unicode_spec.js +13 -10
- package/lib/test/unit/util_spec.js +89 -9
- package/lib/web/annotation_layer_builder.js +38 -21
- package/lib/web/app.js +610 -245
- package/lib/web/app_options.js +54 -34
- package/lib/web/base_viewer.js +359 -162
- package/lib/web/chromecom.js +159 -80
- package/lib/web/debugger.js +161 -17
- package/lib/web/download_manager.js +29 -11
- package/lib/web/firefox_print_service.js +16 -8
- package/lib/web/firefoxcom.js +127 -91
- package/lib/web/genericcom.js +50 -31
- package/lib/web/genericl10n.js +46 -34
- package/lib/web/grab_to_pan.js +25 -3
- package/lib/web/interfaces.js +108 -61
- package/lib/web/overlay_manager.js +67 -45
- package/lib/web/password_prompt.js +20 -12
- package/lib/web/pdf_attachment_viewer.js +37 -17
- package/lib/web/pdf_cursor_tools.js +38 -15
- package/lib/web/pdf_document_properties.js +65 -24
- package/lib/web/pdf_find_bar.js +48 -20
- package/lib/web/pdf_find_controller.js +290 -89
- package/lib/web/pdf_find_utils.js +19 -3
- package/lib/web/pdf_history.js +186 -49
- package/lib/web/pdf_link_service.js +127 -52
- package/lib/web/pdf_outline_viewer.js +71 -21
- package/lib/web/pdf_page_view.js +188 -63
- package/lib/web/pdf_presentation_mode.js +98 -33
- package/lib/web/pdf_print_service.js +54 -10
- package/lib/web/pdf_rendering_queue.js +26 -4
- package/lib/web/pdf_sidebar.js +116 -62
- package/lib/web/pdf_sidebar_resizer.js +41 -15
- package/lib/web/pdf_single_page_viewer.js +65 -68
- package/lib/web/pdf_thumbnail_view.js +102 -31
- package/lib/web/pdf_thumbnail_viewer.js +62 -22
- package/lib/web/pdf_viewer.component.js +111 -31
- package/lib/web/pdf_viewer.js +80 -60
- package/lib/web/preferences.js +61 -39
- package/lib/web/secondary_toolbar.js +101 -82
- package/lib/web/text_layer_builder.js +124 -69
- package/lib/web/toolbar.js +67 -27
- package/lib/web/ui_utils.js +284 -128
- package/lib/web/view_history.js +75 -51
- package/lib/web/viewer_compatibility.js +2 -1
- package/package.json +1 -1
- package/web/pdf_viewer.css +1 -1
- package/web/pdf_viewer.js +2200 -973
- package/web/pdf_viewer.js.map +1 -1
- 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
|
-
|
22
|
+
"use strict";
|
23
23
|
|
24
24
|
Object.defineProperty(exports, "__esModule", {
|
25
25
|
value: true
|
26
26
|
});
|
27
|
-
exports.FontLoader = exports.FontFaceObject =
|
27
|
+
exports.FontLoader = exports.FontFaceObject = void 0;
|
28
28
|
|
29
|
-
var
|
29
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
30
30
|
|
31
|
-
var _util = require(
|
31
|
+
var _util = require("../shared/util");
|
32
32
|
|
33
|
-
function
|
33
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
34
34
|
|
35
|
-
function
|
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
|
40
|
-
|
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:
|
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:
|
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 =
|
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:
|
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:
|
87
|
-
value: function
|
88
|
-
var
|
89
|
-
|
90
|
-
|
91
|
-
|
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
|
-
|
101
|
-
|
102
|
-
|
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
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
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
|
-
}
|
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
|
-
|
139
|
-
|
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:
|
207
|
+
key: "_queueLoadingCallback",
|
149
208
|
value: function _queueLoadingCallback(callback) {
|
150
|
-
|
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:
|
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:
|
217
|
+
key: "isFontLoadingAPISupported",
|
175
218
|
get: function get() {
|
176
219
|
(0, _util.unreachable)('Abstract method `isFontLoadingAPISupported`.');
|
177
220
|
}
|
178
221
|
}, {
|
179
|
-
key:
|
222
|
+
key: "isSyncFontLoadingSupported",
|
180
223
|
get: function get() {
|
181
224
|
(0, _util.unreachable)('Abstract method `isSyncFontLoadingSupported`.');
|
182
225
|
}
|
183
226
|
}, {
|
184
|
-
key:
|
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
|
236
|
+
var FontLoader;
|
237
|
+
exports.FontLoader = FontLoader;
|
194
238
|
{
|
195
|
-
exports.FontLoader = FontLoader =
|
239
|
+
exports.FontLoader = FontLoader =
|
240
|
+
/*#__PURE__*/
|
241
|
+
function (_BaseFontLoader) {
|
196
242
|
_inherits(GenericFontLoader, _BaseFontLoader);
|
197
243
|
|
198
244
|
function GenericFontLoader(docId) {
|
199
|
-
|
245
|
+
var _this2;
|
200
246
|
|
201
|
-
|
247
|
+
_classCallCheck(this, GenericFontLoader);
|
202
248
|
|
203
|
-
|
204
|
-
|
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:
|
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
|
-
|
219
|
-
|
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
|
-
|
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 =
|
256
|
-
var rule =
|
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:
|
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:
|
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:
|
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 =
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
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:
|
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:
|
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 =
|
368
|
-
var rule =
|
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:
|
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
|
-
|
381
|
-
|
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({
|
497
|
+
this._onUnsupportedFeature({
|
498
|
+
featureId: _util.UNSUPPORTED_FEATURES.font
|
499
|
+
});
|
390
500
|
}
|
391
|
-
|
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
|
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;
|