pdfjs-dist 2.2.228 → 2.6.347
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/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8816 -19300
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +22 -1
- package/build/pdf.worker.entry.js +5 -3
- package/build/pdf.worker.js +27185 -35746
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +26665 -0
- package/es5/build/pdf.js.map +1 -0
- package/es5/build/pdf.min.js +22 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +61231 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/build/pdf.worker.min.js +22 -0
- package/es5/image_decoders/pdf.image_decoders.js +12529 -0
- package/es5/image_decoders/pdf.image_decoders.js.map +1 -0
- package/es5/image_decoders/pdf.image_decoders.min.js +22 -0
- package/es5/web/images/annotation-check.svg +11 -0
- package/es5/web/images/annotation-comment.svg +16 -0
- package/es5/web/images/annotation-help.svg +26 -0
- package/es5/web/images/annotation-insert.svg +10 -0
- package/es5/web/images/annotation-key.svg +11 -0
- package/es5/web/images/annotation-newparagraph.svg +11 -0
- package/es5/web/images/annotation-noicon.svg +7 -0
- package/es5/web/images/annotation-note.svg +42 -0
- package/es5/web/images/annotation-paragraph.svg +16 -0
- package/es5/web/images/loading-icon.gif +0 -0
- package/es5/web/images/shadow.png +0 -0
- package/es5/web/pdf_viewer.css +406 -0
- package/es5/web/pdf_viewer.js +7886 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1498 -4832
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +22 -1
- package/lib/README.md +7 -0
- package/lib/core/annotation.js +1144 -927
- package/lib/core/arithmetic_decoder.js +81 -97
- package/lib/core/bidi.js +54 -46
- package/lib/core/ccitt.js +88 -81
- package/lib/core/ccitt_stream.js +15 -14
- package/lib/core/cff_parser.js +747 -716
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +462 -553
- package/lib/core/cmap.js +231 -277
- package/lib/core/colorspace.js +715 -857
- package/lib/core/core_utils.js +57 -52
- package/lib/core/crypto.js +416 -437
- package/lib/core/document.js +629 -670
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +3229 -2800
- package/lib/core/font_renderer.js +135 -178
- package/lib/core/fonts.js +602 -534
- package/lib/core/function.js +355 -279
- package/lib/core/glyphlist.js +4527 -4526
- package/lib/core/image.js +442 -439
- package/lib/core/image_utils.js +221 -61
- package/lib/core/jbig2.js +325 -316
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +21 -26
- package/lib/core/jpg.js +289 -233
- package/lib/core/jpx.js +161 -143
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2928 -2928
- package/lib/core/murmurhash3.js +87 -102
- package/lib/core/obj.js +1343 -1300
- package/lib/core/operator_list.js +90 -67
- package/lib/core/parser.js +990 -987
- package/lib/core/pattern.js +105 -77
- package/lib/core/pdf_manager.js +149 -316
- package/lib/core/primitives.js +156 -104
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +94 -74
- package/lib/core/type1_parser.js +89 -69
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +275 -290
- package/lib/core/worker_stream.js +101 -210
- package/lib/core/writer.js +242 -0
- package/lib/display/annotation_layer.js +772 -1041
- package/lib/display/annotation_storage.js +89 -0
- package/lib/display/api.js +1575 -1868
- package/lib/display/api_compatibility.js +12 -17
- package/lib/display/canvas.js +370 -222
- package/lib/display/content_disposition.js +40 -59
- package/lib/display/display_utils.js +341 -536
- package/lib/display/fetch_stream.js +188 -304
- package/lib/display/font_loader.js +282 -414
- package/lib/display/metadata.js +81 -99
- package/lib/display/network.js +362 -511
- package/lib/display/network_utils.js +25 -18
- package/lib/display/node_stream.js +283 -465
- package/lib/display/node_utils.js +87 -0
- package/lib/display/optional_content_config.js +184 -0
- package/lib/display/pattern_helper.js +93 -44
- package/lib/display/svg.js +1163 -1401
- package/lib/display/text_layer.js +154 -137
- package/lib/display/transport_stream.js +237 -375
- package/lib/display/webgl.js +70 -83
- package/lib/display/worker_options.js +3 -3
- package/lib/display/xml_parser.js +303 -392
- package/lib/examples/node/domstubs.js +37 -37
- package/lib/pdf.js +220 -58
- package/lib/pdf.worker.js +14 -6
- package/lib/shared/compatibility.js +3 -246
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +327 -332
- package/lib/shared/util.js +271 -306
- package/lib/test/unit/annotation_spec.js +1902 -763
- package/lib/test/unit/annotation_storage_spec.js +83 -0
- package/lib/test/unit/api_spec.js +790 -592
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +73 -72
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +86 -88
- package/lib/test/unit/colorspace_spec.js +346 -154
- package/lib/test/unit/core_utils_spec.js +125 -105
- package/lib/test/unit/crypto_spec.js +232 -185
- package/lib/test/unit/custom_spec.js +150 -24
- package/lib/test/unit/display_svg_spec.js +34 -39
- package/lib/test/unit/display_utils_spec.js +139 -149
- package/lib/test/unit/document_spec.js +128 -17
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +112 -91
- package/lib/test/unit/fetch_stream_spec.js +31 -29
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +48 -32
- package/lib/test/unit/message_handler_spec.js +173 -159
- package/lib/test/unit/metadata_spec.js +71 -71
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +13 -11
- package/lib/test/unit/network_utils_spec.js +158 -144
- package/lib/test/unit/node_stream_spec.js +76 -90
- package/lib/test/unit/parser_spec.js +108 -114
- package/lib/test/unit/pdf_find_controller_spec.js +55 -86
- package/lib/test/unit/pdf_find_utils_spec.js +32 -32
- package/lib/test/unit/pdf_history_spec.js +32 -32
- package/lib/test/unit/primitives_spec.js +337 -156
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +91 -304
- package/lib/test/unit/testreporter.js +33 -22
- package/lib/test/unit/type1_parser_spec.js +42 -42
- package/lib/test/unit/ui_utils_spec.js +299 -461
- package/lib/test/unit/unicode_spec.js +42 -42
- package/lib/test/unit/util_spec.js +129 -149
- package/lib/test/unit/writer_spec.js +84 -0
- package/lib/web/annotation_layer_builder.js +78 -111
- package/lib/web/app.js +1542 -1267
- package/lib/web/app_options.js +76 -91
- package/lib/web/base_tree_viewer.js +100 -0
- package/lib/web/base_viewer.js +869 -834
- package/lib/web/chromecom.js +165 -252
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +34 -58
- package/lib/web/firefox_print_service.js +62 -34
- package/lib/web/firefoxcom.js +206 -374
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +30 -30
- package/lib/web/interfaces.js +80 -254
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +150 -126
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +229 -383
- package/lib/web/pdf_find_bar.js +136 -170
- package/lib/web/pdf_find_controller.js +492 -548
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +397 -406
- package/lib/web/pdf_layer_viewer.js +208 -0
- package/lib/web/pdf_link_service.js +304 -348
- package/lib/web/pdf_outline_viewer.js +119 -212
- package/lib/web/pdf_page_view.js +474 -513
- package/lib/web/pdf_presentation_mode.js +308 -357
- package/lib/web/pdf_print_service.js +96 -110
- package/lib/web/pdf_rendering_queue.js +87 -108
- package/lib/web/pdf_sidebar.js +286 -302
- package/lib/web/pdf_sidebar_resizer.js +92 -119
- package/lib/web/pdf_single_page_viewer.js +77 -126
- package/lib/web/pdf_thumbnail_view.js +289 -297
- package/lib/web/pdf_thumbnail_viewer.js +202 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +69 -273
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +284 -319
- package/lib/web/toolbar.js +217 -210
- package/lib/web/ui_utils.js +274 -421
- package/lib/web/view_history.js +52 -226
- package/lib/web/viewer_compatibility.js +21 -6
- package/package.json +4 -9
- package/types/display/annotation_layer.d.ts +61 -0
- package/types/display/annotation_storage.d.ts +36 -0
- package/types/display/api.d.ts +1107 -0
- package/types/display/api_compatibility.d.ts +1 -0
- package/types/display/canvas.d.ts +4 -0
- package/types/display/content_disposition.d.ts +7 -0
- package/types/display/display_utils.d.ts +243 -0
- package/types/display/fetch_stream.d.ts +67 -0
- package/types/display/font_loader.d.ts +19 -0
- package/types/display/metadata.d.ts +9 -0
- package/types/display/network.d.ts +80 -0
- package/types/display/network_utils.d.ts +14 -0
- package/types/display/node_stream.d.ts +72 -0
- package/types/display/node_utils.d.ts +6 -0
- package/types/display/optional_content_config.d.ts +12 -0
- package/types/display/pattern_helper.d.ts +5 -0
- package/types/display/svg.d.ts +2 -0
- package/types/display/text_layer.d.ts +83 -0
- package/types/display/transport_stream.d.ts +57 -0
- package/types/display/webgl.d.ts +20 -0
- package/types/display/worker_options.d.ts +27 -0
- package/types/display/xml_parser.d.ts +35 -0
- package/types/pdf.d.ts +33 -0
- package/types/shared/compatibility.d.ts +1 -0
- package/types/shared/is_node.d.ts +1 -0
- package/types/shared/message_handler.d.ts +62 -0
- package/types/shared/util.d.ts +421 -0
- package/web/images/shadow.png +0 -0
- package/web/pdf_viewer.css +29 -27
- package/web/pdf_viewer.js +3524 -4746
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +6 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/shared/streams_polyfill.js +0 -43
- package/lib/shared/url_polyfill.js +0 -56
- package/web/images/texture.png +0 -0
@@ -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 2020 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.
|
@@ -30,330 +30,223 @@ exports.isFetchSupported = isFetchSupported;
|
|
30
30
|
exports.isValidFetchUrl = isValidFetchUrl;
|
31
31
|
exports.loadScript = loadScript;
|
32
32
|
exports.deprecated = deprecated;
|
33
|
-
exports.
|
34
|
-
exports.PDFDateString = exports.DummyStatTimer = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;
|
33
|
+
exports.PDFDateString = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.BaseCMapReaderFactory = exports.DOMCanvasFactory = exports.BaseCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;
|
35
34
|
|
36
|
-
var
|
35
|
+
var _util = require("../shared/util.js");
|
37
36
|
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
const DEFAULT_LINK_REL = "noopener noreferrer nofollow";
|
38
|
+
exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
|
39
|
+
const SVG_NS = "http://www.w3.org/2000/svg";
|
41
40
|
|
42
|
-
|
41
|
+
class BaseCanvasFactory {
|
42
|
+
constructor() {
|
43
|
+
if (this.constructor === BaseCanvasFactory) {
|
44
|
+
(0, _util.unreachable)("Cannot initialize BaseCanvasFactory.");
|
45
|
+
}
|
46
|
+
}
|
43
47
|
|
44
|
-
|
48
|
+
create(width, height) {
|
49
|
+
(0, _util.unreachable)("Abstract method `create` called.");
|
50
|
+
}
|
45
51
|
|
46
|
-
|
52
|
+
reset(canvasAndContext, width, height) {
|
53
|
+
if (!canvasAndContext.canvas) {
|
54
|
+
throw new Error("Canvas is not specified");
|
55
|
+
}
|
47
56
|
|
48
|
-
|
57
|
+
if (width <= 0 || height <= 0) {
|
58
|
+
throw new Error("Invalid canvas size");
|
59
|
+
}
|
49
60
|
|
50
|
-
|
61
|
+
canvasAndContext.canvas.width = width;
|
62
|
+
canvasAndContext.canvas.height = height;
|
63
|
+
}
|
51
64
|
|
52
|
-
|
53
|
-
|
54
|
-
|
65
|
+
destroy(canvasAndContext) {
|
66
|
+
if (!canvasAndContext.canvas) {
|
67
|
+
throw new Error("Canvas is not specified");
|
68
|
+
}
|
55
69
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
_classCallCheck(this, DOMCanvasFactory);
|
70
|
+
canvasAndContext.canvas.width = 0;
|
71
|
+
canvasAndContext.canvas.height = 0;
|
72
|
+
canvasAndContext.canvas = null;
|
73
|
+
canvasAndContext.context = null;
|
61
74
|
}
|
62
75
|
|
63
|
-
|
64
|
-
key: "create",
|
65
|
-
value: function create(width, height) {
|
66
|
-
if (width <= 0 || height <= 0) {
|
67
|
-
throw new Error('Invalid canvas size');
|
68
|
-
}
|
76
|
+
}
|
69
77
|
|
70
|
-
|
71
|
-
var context = canvas.getContext('2d');
|
72
|
-
canvas.width = width;
|
73
|
-
canvas.height = height;
|
74
|
-
return {
|
75
|
-
canvas: canvas,
|
76
|
-
context: context
|
77
|
-
};
|
78
|
-
}
|
79
|
-
}, {
|
80
|
-
key: "reset",
|
81
|
-
value: function reset(canvasAndContext, width, height) {
|
82
|
-
if (!canvasAndContext.canvas) {
|
83
|
-
throw new Error('Canvas is not specified');
|
84
|
-
}
|
78
|
+
exports.BaseCanvasFactory = BaseCanvasFactory;
|
85
79
|
|
86
|
-
|
87
|
-
|
88
|
-
|
80
|
+
class DOMCanvasFactory extends BaseCanvasFactory {
|
81
|
+
constructor({
|
82
|
+
ownerDocument = globalThis.document
|
83
|
+
} = {}) {
|
84
|
+
super();
|
85
|
+
this._document = ownerDocument;
|
86
|
+
}
|
89
87
|
|
90
|
-
|
91
|
-
|
88
|
+
create(width, height) {
|
89
|
+
if (width <= 0 || height <= 0) {
|
90
|
+
throw new Error("Invalid canvas size");
|
92
91
|
}
|
93
|
-
}, {
|
94
|
-
key: "destroy",
|
95
|
-
value: function destroy(canvasAndContext) {
|
96
|
-
if (!canvasAndContext.canvas) {
|
97
|
-
throw new Error('Canvas is not specified');
|
98
|
-
}
|
99
92
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
93
|
+
const canvas = this._document.createElement("canvas");
|
94
|
+
|
95
|
+
const context = canvas.getContext("2d");
|
96
|
+
canvas.width = width;
|
97
|
+
canvas.height = height;
|
98
|
+
return {
|
99
|
+
canvas,
|
100
|
+
context
|
101
|
+
};
|
102
|
+
}
|
106
103
|
|
107
|
-
|
108
|
-
}();
|
104
|
+
}
|
109
105
|
|
110
106
|
exports.DOMCanvasFactory = DOMCanvasFactory;
|
111
107
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
_classCallCheck(this, DOMCMapReaderFactory);
|
108
|
+
class BaseCMapReaderFactory {
|
109
|
+
constructor({
|
110
|
+
baseUrl = null,
|
111
|
+
isCompressed = false
|
112
|
+
}) {
|
113
|
+
if (this.constructor === BaseCMapReaderFactory) {
|
114
|
+
(0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory.");
|
115
|
+
}
|
122
116
|
|
123
117
|
this.baseUrl = baseUrl;
|
124
118
|
this.isCompressed = isCompressed;
|
125
119
|
}
|
126
120
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
121
|
+
async fetch({
|
122
|
+
name
|
123
|
+
}) {
|
124
|
+
if (!this.baseUrl) {
|
125
|
+
throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
|
126
|
+
}
|
127
|
+
|
128
|
+
if (!name) {
|
129
|
+
throw new Error("CMap name must be specified.");
|
130
|
+
}
|
131
|
+
|
132
|
+
const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : "");
|
133
|
+
const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
|
134
|
+
return this._fetchData(url, compressionType).catch(reason => {
|
135
|
+
throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`);
|
136
|
+
});
|
137
|
+
}
|
138
|
+
|
139
|
+
_fetchData(url, compressionType) {
|
140
|
+
(0, _util.unreachable)("Abstract method `_fetchData` called.");
|
141
|
+
}
|
142
|
+
|
143
|
+
}
|
144
|
+
|
145
|
+
exports.BaseCMapReaderFactory = BaseCMapReaderFactory;
|
146
|
+
|
147
|
+
class DOMCMapReaderFactory extends BaseCMapReaderFactory {
|
148
|
+
_fetchData(url, compressionType) {
|
149
|
+
if (isFetchSupported() && isValidFetchUrl(url, document.baseURI)) {
|
150
|
+
return fetch(url).then(async response => {
|
151
|
+
if (!response.ok) {
|
152
|
+
throw new Error(response.statusText);
|
153
|
+
}
|
154
|
+
|
155
|
+
let cMapData;
|
156
|
+
|
157
|
+
if (this.isCompressed) {
|
158
|
+
cMapData = new Uint8Array(await response.arrayBuffer());
|
159
|
+
} else {
|
160
|
+
cMapData = (0, _util.stringToBytes)(await response.text());
|
161
|
+
}
|
162
|
+
|
163
|
+
return {
|
164
|
+
cMapData,
|
165
|
+
compressionType
|
166
|
+
};
|
167
|
+
});
|
168
|
+
}
|
169
|
+
|
170
|
+
return new Promise((resolve, reject) => {
|
171
|
+
const request = new XMLHttpRequest();
|
172
|
+
request.open("GET", url, true);
|
173
|
+
|
174
|
+
if (this.isCompressed) {
|
175
|
+
request.responseType = "arraybuffer";
|
132
176
|
}
|
133
177
|
|
134
|
-
|
135
|
-
|
136
|
-
|
178
|
+
request.onreadystatechange = () => {
|
179
|
+
if (request.readyState !== XMLHttpRequest.DONE) {
|
180
|
+
return;
|
181
|
+
}
|
182
|
+
|
183
|
+
if (request.status === 200 || request.status === 0) {
|
184
|
+
let cMapData;
|
137
185
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
var _ref3 = _asyncToGenerator(
|
143
|
-
/*#__PURE__*/
|
144
|
-
_regenerator["default"].mark(function _callee2(_ref2) {
|
145
|
-
var _this = this;
|
146
|
-
|
147
|
-
var name, url, compressionType;
|
148
|
-
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
149
|
-
while (1) {
|
150
|
-
switch (_context2.prev = _context2.next) {
|
151
|
-
case 0:
|
152
|
-
name = _ref2.name;
|
153
|
-
|
154
|
-
if (this.baseUrl) {
|
155
|
-
_context2.next = 3;
|
156
|
-
break;
|
157
|
-
}
|
158
|
-
|
159
|
-
throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
|
160
|
-
|
161
|
-
case 3:
|
162
|
-
if (name) {
|
163
|
-
_context2.next = 5;
|
164
|
-
break;
|
165
|
-
}
|
166
|
-
|
167
|
-
throw new Error('CMap name must be specified.');
|
168
|
-
|
169
|
-
case 5:
|
170
|
-
url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
|
171
|
-
compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
|
172
|
-
|
173
|
-
if (!(isFetchSupported() && isValidFetchUrl(url, document.baseURI))) {
|
174
|
-
_context2.next = 9;
|
175
|
-
break;
|
176
|
-
}
|
177
|
-
|
178
|
-
return _context2.abrupt("return", fetch(url).then(
|
179
|
-
/*#__PURE__*/
|
180
|
-
function () {
|
181
|
-
var _ref4 = _asyncToGenerator(
|
182
|
-
/*#__PURE__*/
|
183
|
-
_regenerator["default"].mark(function _callee(response) {
|
184
|
-
var cMapData;
|
185
|
-
return _regenerator["default"].wrap(function _callee$(_context) {
|
186
|
-
while (1) {
|
187
|
-
switch (_context.prev = _context.next) {
|
188
|
-
case 0:
|
189
|
-
if (response.ok) {
|
190
|
-
_context.next = 2;
|
191
|
-
break;
|
192
|
-
}
|
193
|
-
|
194
|
-
throw new Error(response.statusText);
|
195
|
-
|
196
|
-
case 2:
|
197
|
-
if (!_this.isCompressed) {
|
198
|
-
_context.next = 10;
|
199
|
-
break;
|
200
|
-
}
|
201
|
-
|
202
|
-
_context.t0 = Uint8Array;
|
203
|
-
_context.next = 6;
|
204
|
-
return response.arrayBuffer();
|
205
|
-
|
206
|
-
case 6:
|
207
|
-
_context.t1 = _context.sent;
|
208
|
-
cMapData = new _context.t0(_context.t1);
|
209
|
-
_context.next = 15;
|
210
|
-
break;
|
211
|
-
|
212
|
-
case 10:
|
213
|
-
_context.t2 = _util.stringToBytes;
|
214
|
-
_context.next = 13;
|
215
|
-
return response.text();
|
216
|
-
|
217
|
-
case 13:
|
218
|
-
_context.t3 = _context.sent;
|
219
|
-
cMapData = (0, _context.t2)(_context.t3);
|
220
|
-
|
221
|
-
case 15:
|
222
|
-
return _context.abrupt("return", {
|
223
|
-
cMapData: cMapData,
|
224
|
-
compressionType: compressionType
|
225
|
-
});
|
226
|
-
|
227
|
-
case 16:
|
228
|
-
case "end":
|
229
|
-
return _context.stop();
|
230
|
-
}
|
231
|
-
}
|
232
|
-
}, _callee);
|
233
|
-
}));
|
234
|
-
|
235
|
-
return function (_x3) {
|
236
|
-
return _ref4.apply(this, arguments);
|
237
|
-
};
|
238
|
-
}())["catch"](function (reason) {
|
239
|
-
throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url));
|
240
|
-
}));
|
241
|
-
|
242
|
-
case 9:
|
243
|
-
return _context2.abrupt("return", new Promise(function (resolve, reject) {
|
244
|
-
var request = new XMLHttpRequest();
|
245
|
-
request.open('GET', url, true);
|
246
|
-
|
247
|
-
if (_this.isCompressed) {
|
248
|
-
request.responseType = 'arraybuffer';
|
249
|
-
}
|
250
|
-
|
251
|
-
request.onreadystatechange = function () {
|
252
|
-
if (request.readyState !== XMLHttpRequest.DONE) {
|
253
|
-
return;
|
254
|
-
}
|
255
|
-
|
256
|
-
if (request.status === 200 || request.status === 0) {
|
257
|
-
var cMapData;
|
258
|
-
|
259
|
-
if (_this.isCompressed && request.response) {
|
260
|
-
cMapData = new Uint8Array(request.response);
|
261
|
-
} else if (!_this.isCompressed && request.responseText) {
|
262
|
-
cMapData = (0, _util.stringToBytes)(request.responseText);
|
263
|
-
}
|
264
|
-
|
265
|
-
if (cMapData) {
|
266
|
-
resolve({
|
267
|
-
cMapData: cMapData,
|
268
|
-
compressionType: compressionType
|
269
|
-
});
|
270
|
-
return;
|
271
|
-
}
|
272
|
-
}
|
273
|
-
|
274
|
-
reject(new Error(request.statusText));
|
275
|
-
};
|
276
|
-
|
277
|
-
request.send(null);
|
278
|
-
})["catch"](function (reason) {
|
279
|
-
throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url));
|
280
|
-
}));
|
281
|
-
|
282
|
-
case 10:
|
283
|
-
case "end":
|
284
|
-
return _context2.stop();
|
285
|
-
}
|
186
|
+
if (this.isCompressed && request.response) {
|
187
|
+
cMapData = new Uint8Array(request.response);
|
188
|
+
} else if (!this.isCompressed && request.responseText) {
|
189
|
+
cMapData = (0, _util.stringToBytes)(request.responseText);
|
286
190
|
}
|
287
|
-
}, _callee2, this);
|
288
|
-
}));
|
289
191
|
|
290
|
-
|
291
|
-
|
192
|
+
if (cMapData) {
|
193
|
+
resolve({
|
194
|
+
cMapData,
|
195
|
+
compressionType
|
196
|
+
});
|
197
|
+
return;
|
198
|
+
}
|
199
|
+
}
|
200
|
+
|
201
|
+
reject(new Error(request.statusText));
|
292
202
|
};
|
293
|
-
}())
|
294
|
-
}]);
|
295
203
|
|
296
|
-
|
297
|
-
}
|
204
|
+
request.send(null);
|
205
|
+
});
|
206
|
+
}
|
207
|
+
|
208
|
+
}
|
298
209
|
|
299
210
|
exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
|
300
211
|
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
212
|
+
class DOMSVGFactory {
|
213
|
+
create(width, height) {
|
214
|
+
(0, _util.assert)(width > 0 && height > 0, "Invalid SVG dimensions");
|
215
|
+
const svg = document.createElementNS(SVG_NS, "svg:svg");
|
216
|
+
svg.setAttribute("version", "1.1");
|
217
|
+
svg.setAttribute("width", width + "px");
|
218
|
+
svg.setAttribute("height", height + "px");
|
219
|
+
svg.setAttribute("preserveAspectRatio", "none");
|
220
|
+
svg.setAttribute("viewBox", "0 0 " + width + " " + height);
|
221
|
+
return svg;
|
306
222
|
}
|
307
223
|
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
var svg = document.createElementNS(SVG_NS, 'svg:svg');
|
313
|
-
svg.setAttribute('version', '1.1');
|
314
|
-
svg.setAttribute('width', width + 'px');
|
315
|
-
svg.setAttribute('height', height + 'px');
|
316
|
-
svg.setAttribute('preserveAspectRatio', 'none');
|
317
|
-
svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);
|
318
|
-
return svg;
|
319
|
-
}
|
320
|
-
}, {
|
321
|
-
key: "createElement",
|
322
|
-
value: function createElement(type) {
|
323
|
-
(0, _util.assert)(typeof type === 'string', 'Invalid SVG element type');
|
324
|
-
return document.createElementNS(SVG_NS, type);
|
325
|
-
}
|
326
|
-
}]);
|
224
|
+
createElement(type) {
|
225
|
+
(0, _util.assert)(typeof type === "string", "Invalid SVG element type");
|
226
|
+
return document.createElementNS(SVG_NS, type);
|
227
|
+
}
|
327
228
|
|
328
|
-
|
329
|
-
}();
|
229
|
+
}
|
330
230
|
|
331
231
|
exports.DOMSVGFactory = DOMSVGFactory;
|
332
232
|
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
_ref5$offsetY = _ref5.offsetY,
|
343
|
-
offsetY = _ref5$offsetY === void 0 ? 0 : _ref5$offsetY,
|
344
|
-
_ref5$dontFlip = _ref5.dontFlip,
|
345
|
-
dontFlip = _ref5$dontFlip === void 0 ? false : _ref5$dontFlip;
|
346
|
-
|
347
|
-
_classCallCheck(this, PageViewport);
|
348
|
-
|
233
|
+
class PageViewport {
|
234
|
+
constructor({
|
235
|
+
viewBox,
|
236
|
+
scale,
|
237
|
+
rotation,
|
238
|
+
offsetX = 0,
|
239
|
+
offsetY = 0,
|
240
|
+
dontFlip = false
|
241
|
+
}) {
|
349
242
|
this.viewBox = viewBox;
|
350
243
|
this.scale = scale;
|
351
244
|
this.rotation = rotation;
|
352
245
|
this.offsetX = offsetX;
|
353
246
|
this.offsetY = offsetY;
|
354
|
-
|
355
|
-
|
356
|
-
|
247
|
+
const centerX = (viewBox[2] + viewBox[0]) / 2;
|
248
|
+
const centerY = (viewBox[3] + viewBox[1]) / 2;
|
249
|
+
let rotateA, rotateB, rotateC, rotateD;
|
357
250
|
rotation = rotation % 360;
|
358
251
|
rotation = rotation < 0 ? rotation + 360 : rotation;
|
359
252
|
|
@@ -379,12 +272,15 @@ function () {
|
|
379
272
|
rotateD = 0;
|
380
273
|
break;
|
381
274
|
|
382
|
-
|
275
|
+
case 0:
|
383
276
|
rotateA = 1;
|
384
277
|
rotateB = 0;
|
385
278
|
rotateC = 0;
|
386
279
|
rotateD = -1;
|
387
280
|
break;
|
281
|
+
|
282
|
+
default:
|
283
|
+
throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.");
|
388
284
|
}
|
389
285
|
|
390
286
|
if (dontFlip) {
|
@@ -392,8 +288,8 @@ function () {
|
|
392
288
|
rotateD = -rotateD;
|
393
289
|
}
|
394
290
|
|
395
|
-
|
396
|
-
|
291
|
+
let offsetCanvasX, offsetCanvasY;
|
292
|
+
let width, height;
|
397
293
|
|
398
294
|
if (rotateA === 0) {
|
399
295
|
offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
|
@@ -412,66 +308,53 @@ function () {
|
|
412
308
|
this.height = height;
|
413
309
|
}
|
414
310
|
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
offsetY: this.offsetY,
|
432
|
-
dontFlip: dontFlip
|
433
|
-
});
|
434
|
-
}
|
435
|
-
}, {
|
436
|
-
key: "convertToViewportPoint",
|
437
|
-
value: function convertToViewportPoint(x, y) {
|
438
|
-
return _util.Util.applyTransform([x, y], this.transform);
|
439
|
-
}
|
440
|
-
}, {
|
441
|
-
key: "convertToViewportRectangle",
|
442
|
-
value: function convertToViewportRectangle(rect) {
|
443
|
-
var topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
|
311
|
+
clone({
|
312
|
+
scale = this.scale,
|
313
|
+
rotation = this.rotation,
|
314
|
+
offsetX = this.offsetX,
|
315
|
+
offsetY = this.offsetY,
|
316
|
+
dontFlip = false
|
317
|
+
} = {}) {
|
318
|
+
return new PageViewport({
|
319
|
+
viewBox: this.viewBox.slice(),
|
320
|
+
scale,
|
321
|
+
rotation,
|
322
|
+
offsetX,
|
323
|
+
offsetY,
|
324
|
+
dontFlip
|
325
|
+
});
|
326
|
+
}
|
444
327
|
|
445
|
-
|
328
|
+
convertToViewportPoint(x, y) {
|
329
|
+
return _util.Util.applyTransform([x, y], this.transform);
|
330
|
+
}
|
446
331
|
|
447
|
-
|
448
|
-
|
449
|
-
}, {
|
450
|
-
key: "convertToPdfPoint",
|
451
|
-
value: function convertToPdfPoint(x, y) {
|
452
|
-
return _util.Util.applyInverseTransform([x, y], this.transform);
|
453
|
-
}
|
454
|
-
}]);
|
332
|
+
convertToViewportRectangle(rect) {
|
333
|
+
const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
|
455
334
|
|
456
|
-
|
457
|
-
|
335
|
+
const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
|
336
|
+
|
337
|
+
return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
|
338
|
+
}
|
339
|
+
|
340
|
+
convertToPdfPoint(x, y) {
|
341
|
+
return _util.Util.applyInverseTransform([x, y], this.transform);
|
342
|
+
}
|
343
|
+
|
344
|
+
}
|
458
345
|
|
459
346
|
exports.PageViewport = PageViewport;
|
460
347
|
|
461
|
-
|
462
|
-
|
463
|
-
|
348
|
+
class RenderingCancelledException extends _util.BaseException {
|
349
|
+
constructor(msg, type) {
|
350
|
+
super(msg);
|
464
351
|
this.type = type;
|
465
352
|
}
|
466
353
|
|
467
|
-
|
468
|
-
RenderingCancelledException.prototype.name = 'RenderingCancelledException';
|
469
|
-
RenderingCancelledException.constructor = RenderingCancelledException;
|
470
|
-
return RenderingCancelledException;
|
471
|
-
}();
|
354
|
+
}
|
472
355
|
|
473
356
|
exports.RenderingCancelledException = RenderingCancelledException;
|
474
|
-
|
357
|
+
const LinkTarget = {
|
475
358
|
NONE: 0,
|
476
359
|
SELF: 1,
|
477
360
|
BLANK: 2,
|
@@ -479,192 +362,135 @@ var LinkTarget = {
|
|
479
362
|
TOP: 4
|
480
363
|
};
|
481
364
|
exports.LinkTarget = LinkTarget;
|
482
|
-
var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top'];
|
483
365
|
|
484
|
-
function addLinkAttributes(link
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
366
|
+
function addLinkAttributes(link, {
|
367
|
+
url,
|
368
|
+
target,
|
369
|
+
rel,
|
370
|
+
enabled = true
|
371
|
+
} = {}) {
|
372
|
+
(0, _util.assert)(url && typeof url === "string", 'addLinkAttributes: A valid "url" parameter must provided.');
|
373
|
+
const urlNullRemoved = (0, _util.removeNullCharacters)(url);
|
374
|
+
|
375
|
+
if (enabled) {
|
376
|
+
link.href = link.title = urlNullRemoved;
|
377
|
+
} else {
|
378
|
+
link.href = "";
|
379
|
+
link.title = `Disabled: ${urlNullRemoved}`;
|
380
|
+
|
381
|
+
link.onclick = () => {
|
382
|
+
return false;
|
383
|
+
};
|
384
|
+
}
|
385
|
+
|
386
|
+
let targetStr = "";
|
489
387
|
|
490
|
-
|
388
|
+
switch (target) {
|
389
|
+
case LinkTarget.NONE:
|
390
|
+
break;
|
491
391
|
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
392
|
+
case LinkTarget.SELF:
|
393
|
+
targetStr = "_self";
|
394
|
+
break;
|
395
|
+
|
396
|
+
case LinkTarget.BLANK:
|
397
|
+
targetStr = "_blank";
|
398
|
+
break;
|
399
|
+
|
400
|
+
case LinkTarget.PARENT:
|
401
|
+
targetStr = "_parent";
|
402
|
+
break;
|
403
|
+
|
404
|
+
case LinkTarget.TOP:
|
405
|
+
targetStr = "_top";
|
406
|
+
break;
|
497
407
|
}
|
408
|
+
|
409
|
+
link.target = targetStr;
|
410
|
+
link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL;
|
498
411
|
}
|
499
412
|
|
500
413
|
function getFilenameFromUrl(url) {
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
return url.substring(url.lastIndexOf(
|
414
|
+
const anchor = url.indexOf("#");
|
415
|
+
const query = url.indexOf("?");
|
416
|
+
const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
|
417
|
+
return url.substring(url.lastIndexOf("/", end) + 1, end);
|
505
418
|
}
|
506
419
|
|
507
|
-
|
508
|
-
|
509
|
-
function () {
|
510
|
-
function StatTimer() {
|
511
|
-
var enable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
512
|
-
|
513
|
-
_classCallCheck(this, StatTimer);
|
514
|
-
|
515
|
-
this.enabled = !!enable;
|
420
|
+
class StatTimer {
|
421
|
+
constructor() {
|
516
422
|
this.started = Object.create(null);
|
517
423
|
this.times = [];
|
518
424
|
}
|
519
425
|
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
return;
|
525
|
-
}
|
426
|
+
time(name) {
|
427
|
+
if (name in this.started) {
|
428
|
+
(0, _util.warn)(`Timer is already running for ${name}`);
|
429
|
+
}
|
526
430
|
|
527
|
-
|
528
|
-
|
529
|
-
}
|
431
|
+
this.started[name] = Date.now();
|
432
|
+
}
|
530
433
|
|
531
|
-
|
434
|
+
timeEnd(name) {
|
435
|
+
if (!(name in this.started)) {
|
436
|
+
(0, _util.warn)(`Timer has not been started for ${name}`);
|
532
437
|
}
|
533
|
-
}, {
|
534
|
-
key: "timeEnd",
|
535
|
-
value: function timeEnd(name) {
|
536
|
-
if (!this.enabled) {
|
537
|
-
return;
|
538
|
-
}
|
539
438
|
|
540
|
-
|
541
|
-
|
542
|
-
|
439
|
+
this.times.push({
|
440
|
+
name,
|
441
|
+
start: this.started[name],
|
442
|
+
end: Date.now()
|
443
|
+
});
|
444
|
+
delete this.started[name];
|
445
|
+
}
|
543
446
|
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
'end': Date.now()
|
548
|
-
});
|
549
|
-
delete this.started[name];
|
550
|
-
}
|
551
|
-
}, {
|
552
|
-
key: "toString",
|
553
|
-
value: function toString() {
|
554
|
-
var out = '',
|
555
|
-
longest = 0;
|
556
|
-
var _iteratorNormalCompletion = true;
|
557
|
-
var _didIteratorError = false;
|
558
|
-
var _iteratorError = undefined;
|
559
|
-
|
560
|
-
try {
|
561
|
-
for (var _iterator = this.times[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
562
|
-
var time = _step.value;
|
563
|
-
var name = time.name;
|
564
|
-
|
565
|
-
if (name.length > longest) {
|
566
|
-
longest = name.length;
|
567
|
-
}
|
568
|
-
}
|
569
|
-
} catch (err) {
|
570
|
-
_didIteratorError = true;
|
571
|
-
_iteratorError = err;
|
572
|
-
} finally {
|
573
|
-
try {
|
574
|
-
if (!_iteratorNormalCompletion && _iterator["return"] != null) {
|
575
|
-
_iterator["return"]();
|
576
|
-
}
|
577
|
-
} finally {
|
578
|
-
if (_didIteratorError) {
|
579
|
-
throw _iteratorError;
|
580
|
-
}
|
581
|
-
}
|
582
|
-
}
|
447
|
+
toString() {
|
448
|
+
const outBuf = [];
|
449
|
+
let longest = 0;
|
583
450
|
|
584
|
-
|
585
|
-
|
586
|
-
var _iteratorError2 = undefined;
|
451
|
+
for (const time of this.times) {
|
452
|
+
const name = time.name;
|
587
453
|
|
588
|
-
|
589
|
-
|
590
|
-
var _time = _step2.value;
|
591
|
-
var duration = _time.end - _time.start;
|
592
|
-
out += "".concat(_time.name.padEnd(longest), " ").concat(duration, "ms\n");
|
593
|
-
}
|
594
|
-
} catch (err) {
|
595
|
-
_didIteratorError2 = true;
|
596
|
-
_iteratorError2 = err;
|
597
|
-
} finally {
|
598
|
-
try {
|
599
|
-
if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
|
600
|
-
_iterator2["return"]();
|
601
|
-
}
|
602
|
-
} finally {
|
603
|
-
if (_didIteratorError2) {
|
604
|
-
throw _iteratorError2;
|
605
|
-
}
|
606
|
-
}
|
454
|
+
if (name.length > longest) {
|
455
|
+
longest = name.length;
|
607
456
|
}
|
608
|
-
|
609
|
-
return out;
|
610
457
|
}
|
611
|
-
}]);
|
612
|
-
|
613
|
-
return StatTimer;
|
614
|
-
}();
|
615
|
-
|
616
|
-
exports.StatTimer = StatTimer;
|
617
458
|
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
_classCallCheck(this, DummyStatTimer);
|
459
|
+
for (const time of this.times) {
|
460
|
+
const duration = time.end - time.start;
|
461
|
+
outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`);
|
462
|
+
}
|
623
463
|
|
624
|
-
|
464
|
+
return outBuf.join("");
|
625
465
|
}
|
626
466
|
|
627
|
-
|
628
|
-
key: "time",
|
629
|
-
value: function time(name) {}
|
630
|
-
}, {
|
631
|
-
key: "timeEnd",
|
632
|
-
value: function timeEnd(name) {}
|
633
|
-
}, {
|
634
|
-
key: "toString",
|
635
|
-
value: function toString() {
|
636
|
-
return '';
|
637
|
-
}
|
638
|
-
}]);
|
639
|
-
|
640
|
-
return DummyStatTimer;
|
641
|
-
}();
|
467
|
+
}
|
642
468
|
|
643
|
-
exports.
|
469
|
+
exports.StatTimer = StatTimer;
|
644
470
|
|
645
471
|
function isFetchSupported() {
|
646
|
-
return typeof fetch !==
|
472
|
+
return typeof fetch !== "undefined" && typeof Response !== "undefined" && "body" in Response.prototype && typeof ReadableStream !== "undefined";
|
647
473
|
}
|
648
474
|
|
649
475
|
function isValidFetchUrl(url, baseUrl) {
|
650
476
|
try {
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
return protocol ===
|
477
|
+
const {
|
478
|
+
protocol
|
479
|
+
} = baseUrl ? new URL(url, baseUrl) : new URL(url);
|
480
|
+
return protocol === "http:" || protocol === "https:";
|
655
481
|
} catch (ex) {
|
656
482
|
return false;
|
657
483
|
}
|
658
484
|
}
|
659
485
|
|
660
486
|
function loadScript(src) {
|
661
|
-
return new Promise(
|
662
|
-
|
487
|
+
return new Promise((resolve, reject) => {
|
488
|
+
const script = document.createElement("script");
|
663
489
|
script.src = src;
|
664
490
|
script.onload = resolve;
|
665
491
|
|
666
492
|
script.onerror = function () {
|
667
|
-
reject(new Error(
|
493
|
+
reject(new Error(`Cannot load script at: ${script.src}`));
|
668
494
|
};
|
669
495
|
|
670
496
|
(document.head || document.documentElement).appendChild(script);
|
@@ -672,76 +498,55 @@ function loadScript(src) {
|
|
672
498
|
}
|
673
499
|
|
674
500
|
function deprecated(details) {
|
675
|
-
console.log(
|
501
|
+
console.log("Deprecated API usage: " + details);
|
676
502
|
}
|
677
503
|
|
678
|
-
|
679
|
-
(0, _util.assert)(img instanceof Image, 'Invalid `img` parameter.');
|
680
|
-
var url = img.src;
|
681
|
-
|
682
|
-
if (typeof url === 'string' && url.startsWith('blob:') && _util.URL.revokeObjectURL) {
|
683
|
-
_util.URL.revokeObjectURL(url);
|
684
|
-
}
|
504
|
+
let pdfDateStringRegex;
|
685
505
|
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
var PDFDateString =
|
692
|
-
/*#__PURE__*/
|
693
|
-
function () {
|
694
|
-
function PDFDateString() {
|
695
|
-
_classCallCheck(this, PDFDateString);
|
696
|
-
}
|
697
|
-
|
698
|
-
_createClass(PDFDateString, null, [{
|
699
|
-
key: "toDateObject",
|
700
|
-
value: function toDateObject(input) {
|
701
|
-
if (!input || !(0, _util.isString)(input)) {
|
702
|
-
return null;
|
703
|
-
}
|
704
|
-
|
705
|
-
if (!pdfDateStringRegex) {
|
706
|
-
pdfDateStringRegex = new RegExp('^D:' + '(\\d{4})' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '([Z|+|-])?' + '(\\d{2})?' + '\'?' + '(\\d{2})?' + '\'?');
|
707
|
-
}
|
506
|
+
class PDFDateString {
|
507
|
+
static toDateObject(input) {
|
508
|
+
if (!input || !(0, _util.isString)(input)) {
|
509
|
+
return null;
|
510
|
+
}
|
708
511
|
|
709
|
-
|
512
|
+
if (!pdfDateStringRegex) {
|
513
|
+
pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?");
|
514
|
+
}
|
710
515
|
|
711
|
-
|
712
|
-
return null;
|
713
|
-
}
|
516
|
+
const matches = pdfDateStringRegex.exec(input);
|
714
517
|
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
var day = parseInt(matches[3], 10);
|
719
|
-
day = day >= 1 && day <= 31 ? day : 1;
|
720
|
-
var hour = parseInt(matches[4], 10);
|
721
|
-
hour = hour >= 0 && hour <= 23 ? hour : 0;
|
722
|
-
var minute = parseInt(matches[5], 10);
|
723
|
-
minute = minute >= 0 && minute <= 59 ? minute : 0;
|
724
|
-
var second = parseInt(matches[6], 10);
|
725
|
-
second = second >= 0 && second <= 59 ? second : 0;
|
726
|
-
var universalTimeRelation = matches[7] || 'Z';
|
727
|
-
var offsetHour = parseInt(matches[8], 10);
|
728
|
-
offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
|
729
|
-
var offsetMinute = parseInt(matches[9], 10) || 0;
|
730
|
-
offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
|
731
|
-
|
732
|
-
if (universalTimeRelation === '-') {
|
733
|
-
hour += offsetHour;
|
734
|
-
minute += offsetMinute;
|
735
|
-
} else if (universalTimeRelation === '+') {
|
736
|
-
hour -= offsetHour;
|
737
|
-
minute -= offsetMinute;
|
738
|
-
}
|
518
|
+
if (!matches) {
|
519
|
+
return null;
|
520
|
+
}
|
739
521
|
|
740
|
-
|
522
|
+
const year = parseInt(matches[1], 10);
|
523
|
+
let month = parseInt(matches[2], 10);
|
524
|
+
month = month >= 1 && month <= 12 ? month - 1 : 0;
|
525
|
+
let day = parseInt(matches[3], 10);
|
526
|
+
day = day >= 1 && day <= 31 ? day : 1;
|
527
|
+
let hour = parseInt(matches[4], 10);
|
528
|
+
hour = hour >= 0 && hour <= 23 ? hour : 0;
|
529
|
+
let minute = parseInt(matches[5], 10);
|
530
|
+
minute = minute >= 0 && minute <= 59 ? minute : 0;
|
531
|
+
let second = parseInt(matches[6], 10);
|
532
|
+
second = second >= 0 && second <= 59 ? second : 0;
|
533
|
+
const universalTimeRelation = matches[7] || "Z";
|
534
|
+
let offsetHour = parseInt(matches[8], 10);
|
535
|
+
offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
|
536
|
+
let offsetMinute = parseInt(matches[9], 10) || 0;
|
537
|
+
offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
|
538
|
+
|
539
|
+
if (universalTimeRelation === "-") {
|
540
|
+
hour += offsetHour;
|
541
|
+
minute += offsetMinute;
|
542
|
+
} else if (universalTimeRelation === "+") {
|
543
|
+
hour -= offsetHour;
|
544
|
+
minute -= offsetMinute;
|
741
545
|
}
|
742
|
-
}]);
|
743
546
|
|
744
|
-
|
745
|
-
}
|
547
|
+
return new Date(Date.UTC(year, month, day, hour, minute, second));
|
548
|
+
}
|
549
|
+
|
550
|
+
}
|
746
551
|
|
747
552
|
exports.PDFDateString = PDFDateString;
|