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