pdfjs-dist 2.1.266 → 2.5.207
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/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8382 -18492
- 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 +20417 -29816
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25688 -0
- package/es5/build/pdf.js.map +1 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +58239 -0
- package/es5/build/pdf.worker.js.map +1 -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/images/texture.png +0 -0
- package/es5/web/pdf_viewer.css +403 -0
- package/es5/web/pdf_viewer.js +7742 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1475 -4897
- 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 +750 -899
- 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 +235 -183
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +447 -542
- package/lib/core/cmap.js +222 -264
- package/lib/core/colorspace.js +699 -863
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +379 -437
- package/lib/core/document.js +573 -660
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +1103 -868
- package/lib/core/font_renderer.js +135 -178
- package/lib/core/fonts.js +570 -491
- package/lib/core/function.js +291 -288
- package/lib/core/glyphlist.js +4527 -4526
- package/lib/core/image.js +145 -149
- package/lib/core/image_utils.js +170 -0
- 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 +284 -232
- package/lib/core/jpx.js +161 -143
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2929 -2929
- package/lib/core/murmurhash3.js +90 -101
- package/lib/core/obj.js +1183 -1157
- package/lib/core/operator_list.js +99 -67
- package/lib/core/parser.js +972 -911
- package/lib/core/pattern.js +87 -70
- package/lib/core/pdf_manager.js +150 -315
- package/lib/core/primitives.js +83 -56
- 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 +87 -69
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +193 -390
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +741 -972
- package/lib/display/api.js +1500 -1791
- package/lib/display/api_compatibility.js +12 -17
- package/lib/display/canvas.js +165 -165
- package/lib/display/content_disposition.js +40 -59
- package/lib/display/display_utils.js +515 -0
- package/lib/display/fetch_stream.js +183 -298
- package/lib/display/font_loader.js +273 -413
- package/lib/display/metadata.js +86 -98
- package/lib/display/network.js +266 -359
- package/lib/display/network_utils.js +25 -18
- package/lib/display/node_stream.js +285 -458
- package/lib/display/pattern_helper.js +113 -65
- package/lib/display/svg.js +1166 -901
- package/lib/display/text_layer.js +156 -132
- package/lib/display/transport_stream.js +262 -278
- 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 +40 -37
- package/lib/pdf.js +226 -59
- 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 +266 -416
- package/lib/test/unit/annotation_spec.js +1555 -701
- package/lib/test/unit/api_spec.js +802 -604
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +84 -69
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +74 -76
- package/lib/test/unit/colorspace_spec.js +166 -161
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +181 -181
- package/lib/test/unit/custom_spec.js +20 -22
- package/lib/test/unit/display_svg_spec.js +34 -39
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +16 -21
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +83 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +46 -30
- package/lib/test/unit/message_handler_spec.js +173 -159
- package/lib/test/unit/metadata_spec.js +69 -69
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +13 -61
- package/lib/test/unit/network_utils_spec.js +183 -119
- package/lib/test/unit/node_stream_spec.js +78 -92
- package/lib/test/unit/parser_spec.js +172 -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 +140 -125
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +131 -143
- package/lib/test/unit/testreporter.js +19 -19
- package/lib/test/unit/type1_parser_spec.js +42 -42
- package/lib/test/unit/ui_utils_spec.js +297 -459
- package/lib/test/unit/unicode_spec.js +38 -38
- package/lib/test/unit/util_spec.js +121 -305
- package/lib/web/annotation_layer_builder.js +66 -103
- package/lib/web/app.js +1328 -1214
- package/lib/web/app_options.js +105 -107
- package/lib/web/base_viewer.js +824 -838
- package/lib/web/chromecom.js +165 -252
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +39 -55
- package/lib/web/firefox_print_service.js +37 -27
- package/lib/web/firefoxcom.js +212 -363
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +32 -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 +113 -131
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +221 -306
- package/lib/web/pdf_find_bar.js +136 -170
- package/lib/web/pdf_find_controller.js +491 -548
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +397 -406
- package/lib/web/pdf_link_service.js +304 -348
- package/lib/web/pdf_outline_viewer.js +140 -175
- package/lib/web/pdf_page_view.js +452 -523
- package/lib/web/pdf_presentation_mode.js +308 -357
- package/lib/web/pdf_print_service.js +90 -104
- package/lib/web/pdf_rendering_queue.js +84 -108
- package/lib/web/pdf_sidebar.js +276 -306
- 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 +276 -297
- package/lib/web/pdf_thumbnail_viewer.js +186 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +82 -286
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +282 -339
- package/lib/web/toolbar.js +217 -210
- package/lib/web/ui_utils.js +267 -420
- package/lib/web/view_history.js +52 -226
- package/lib/web/viewer_compatibility.js +21 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +35 -25
- package/web/pdf_viewer.js +3489 -4855
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/display/dom_utils.js +0 -494
- package/lib/shared/streams_polyfill.js +0 -43
- package/lib/shared/url_polyfill.js +0 -56
- package/lib/test/unit/dom_utils_spec.js +0 -89
package/lib/web/debugger.js
CHANGED
@@ -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.
|
@@ -19,103 +19,44 @@
|
|
19
19
|
* @licend The above is the entire license notice for the
|
20
20
|
* Javascript code in this page
|
21
21
|
*/
|
22
|
-
|
23
|
-
|
24
|
-
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); }
|
22
|
+
"use strict";
|
25
23
|
|
26
24
|
var FontInspector = function FontInspectorClosure() {
|
27
|
-
var fonts
|
25
|
+
var fonts;
|
28
26
|
var active = false;
|
29
|
-
var fontAttribute =
|
27
|
+
var fontAttribute = "data-font-name";
|
30
28
|
|
31
29
|
function removeSelection() {
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
try {
|
38
|
-
for (var _iterator = divs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
39
|
-
var div = _step.value;
|
40
|
-
div.className = '';
|
41
|
-
}
|
42
|
-
} catch (err) {
|
43
|
-
_didIteratorError = true;
|
44
|
-
_iteratorError = err;
|
45
|
-
} finally {
|
46
|
-
try {
|
47
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
48
|
-
_iterator.return();
|
49
|
-
}
|
50
|
-
} finally {
|
51
|
-
if (_didIteratorError) {
|
52
|
-
throw _iteratorError;
|
53
|
-
}
|
54
|
-
}
|
30
|
+
const divs = document.querySelectorAll(`span[${fontAttribute}]`);
|
31
|
+
|
32
|
+
for (const div of divs) {
|
33
|
+
div.className = "";
|
55
34
|
}
|
56
35
|
}
|
57
36
|
|
58
37
|
function resetSelection() {
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
try {
|
65
|
-
for (var _iterator2 = divs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
66
|
-
var div = _step2.value;
|
67
|
-
div.className = 'debuggerHideText';
|
68
|
-
}
|
69
|
-
} catch (err) {
|
70
|
-
_didIteratorError2 = true;
|
71
|
-
_iteratorError2 = err;
|
72
|
-
} finally {
|
73
|
-
try {
|
74
|
-
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
75
|
-
_iterator2.return();
|
76
|
-
}
|
77
|
-
} finally {
|
78
|
-
if (_didIteratorError2) {
|
79
|
-
throw _iteratorError2;
|
80
|
-
}
|
81
|
-
}
|
38
|
+
const divs = document.querySelectorAll(`span[${fontAttribute}]`);
|
39
|
+
|
40
|
+
for (const div of divs) {
|
41
|
+
div.className = "debuggerHideText";
|
82
42
|
}
|
83
43
|
}
|
84
44
|
|
85
45
|
function selectFont(fontName, show) {
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
try {
|
92
|
-
for (var _iterator3 = divs[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
|
93
|
-
var div = _step3.value;
|
94
|
-
div.className = show ? 'debuggerShowText' : 'debuggerHideText';
|
95
|
-
}
|
96
|
-
} catch (err) {
|
97
|
-
_didIteratorError3 = true;
|
98
|
-
_iteratorError3 = err;
|
99
|
-
} finally {
|
100
|
-
try {
|
101
|
-
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
|
102
|
-
_iterator3.return();
|
103
|
-
}
|
104
|
-
} finally {
|
105
|
-
if (_didIteratorError3) {
|
106
|
-
throw _iteratorError3;
|
107
|
-
}
|
108
|
-
}
|
46
|
+
const divs = document.querySelectorAll(`span[${fontAttribute}=${fontName}]`);
|
47
|
+
|
48
|
+
for (const div of divs) {
|
49
|
+
div.className = show ? "debuggerShowText" : "debuggerHideText";
|
109
50
|
}
|
110
51
|
}
|
111
52
|
|
112
53
|
function textLayerClick(e) {
|
113
|
-
if (!e.target.dataset.fontName || e.target.tagName.toUpperCase() !==
|
54
|
+
if (!e.target.dataset.fontName || e.target.tagName.toUpperCase() !== "SPAN") {
|
114
55
|
return;
|
115
56
|
}
|
116
57
|
|
117
58
|
var fontName = e.target.dataset.fontName;
|
118
|
-
var selects = document.getElementsByTagName(
|
59
|
+
var selects = document.getElementsByTagName("input");
|
119
60
|
|
120
61
|
for (var i = 0; i < selects.length; ++i) {
|
121
62
|
var select = selects[i];
|
@@ -131,23 +72,21 @@ var FontInspector = function FontInspectorClosure() {
|
|
131
72
|
}
|
132
73
|
|
133
74
|
return {
|
134
|
-
id:
|
135
|
-
name:
|
75
|
+
id: "FontInspector",
|
76
|
+
name: "Font Inspector",
|
136
77
|
panel: null,
|
137
78
|
manager: null,
|
138
79
|
init: function init(pdfjsLib) {
|
139
80
|
var panel = this.panel;
|
140
|
-
|
141
|
-
|
142
|
-
tmp.
|
143
|
-
tmp.textContent = 'Refresh';
|
81
|
+
var tmp = document.createElement("button");
|
82
|
+
tmp.addEventListener("click", resetSelection);
|
83
|
+
tmp.textContent = "Refresh";
|
144
84
|
panel.appendChild(tmp);
|
145
|
-
fonts = document.createElement(
|
85
|
+
fonts = document.createElement("div");
|
146
86
|
panel.appendChild(fonts);
|
147
|
-
createObjectURL = pdfjsLib.createObjectURL;
|
148
87
|
},
|
149
88
|
cleanup: function cleanup() {
|
150
|
-
fonts.textContent =
|
89
|
+
fonts.textContent = "";
|
151
90
|
},
|
152
91
|
enabled: false,
|
153
92
|
|
@@ -159,26 +98,24 @@ var FontInspector = function FontInspectorClosure() {
|
|
159
98
|
active = value;
|
160
99
|
|
161
100
|
if (active) {
|
162
|
-
document.body.addEventListener(
|
101
|
+
document.body.addEventListener("click", textLayerClick, true);
|
163
102
|
resetSelection();
|
164
103
|
} else {
|
165
|
-
document.body.removeEventListener(
|
104
|
+
document.body.removeEventListener("click", textLayerClick, true);
|
166
105
|
removeSelection();
|
167
106
|
}
|
168
107
|
},
|
169
108
|
|
170
109
|
fontAdded: function fontAdded(fontObj, url) {
|
171
|
-
var _this = this;
|
172
|
-
|
173
110
|
function properties(obj, list) {
|
174
|
-
var moreInfo = document.createElement(
|
111
|
+
var moreInfo = document.createElement("table");
|
175
112
|
|
176
113
|
for (var i = 0; i < list.length; i++) {
|
177
|
-
var tr = document.createElement(
|
178
|
-
var td1 = document.createElement(
|
114
|
+
var tr = document.createElement("tr");
|
115
|
+
var td1 = document.createElement("td");
|
179
116
|
td1.textContent = list[i];
|
180
117
|
tr.appendChild(td1);
|
181
|
-
var td2 = document.createElement(
|
118
|
+
var td2 = document.createElement("td");
|
182
119
|
td2.textContent = obj[list[i]].toString();
|
183
120
|
tr.appendChild(td2);
|
184
121
|
moreInfo.appendChild(tr);
|
@@ -187,46 +124,46 @@ var FontInspector = function FontInspectorClosure() {
|
|
187
124
|
return moreInfo;
|
188
125
|
}
|
189
126
|
|
190
|
-
var moreInfo = properties(fontObj, [
|
191
|
-
|
192
|
-
var font = document.createElement(
|
193
|
-
var name = document.createElement(
|
127
|
+
var moreInfo = properties(fontObj, ["name", "type"]);
|
128
|
+
const fontName = fontObj.loadedName;
|
129
|
+
var font = document.createElement("div");
|
130
|
+
var name = document.createElement("span");
|
194
131
|
name.textContent = fontName;
|
195
|
-
var download = document.createElement(
|
132
|
+
var download = document.createElement("a");
|
196
133
|
|
197
134
|
if (url) {
|
198
135
|
url = /url\(['"]?([^\)"']+)/.exec(url);
|
199
136
|
download.href = url[1];
|
200
137
|
} else if (fontObj.data) {
|
201
|
-
download.href = createObjectURL(fontObj.data,
|
138
|
+
download.href = URL.createObjectURL(new Blob([fontObj.data], {
|
139
|
+
type: fontObj.mimeType
|
140
|
+
}));
|
202
141
|
}
|
203
142
|
|
204
|
-
download.textContent =
|
205
|
-
var logIt = document.createElement(
|
206
|
-
logIt.href =
|
207
|
-
logIt.textContent =
|
208
|
-
logIt.addEventListener(
|
143
|
+
download.textContent = "Download";
|
144
|
+
var logIt = document.createElement("a");
|
145
|
+
logIt.href = "";
|
146
|
+
logIt.textContent = "Log";
|
147
|
+
logIt.addEventListener("click", function (event) {
|
209
148
|
event.preventDefault();
|
210
149
|
console.log(fontObj);
|
211
150
|
});
|
212
|
-
|
213
|
-
select.setAttribute(
|
151
|
+
const select = document.createElement("input");
|
152
|
+
select.setAttribute("type", "checkbox");
|
214
153
|
select.dataset.fontName = fontName;
|
215
|
-
select.addEventListener(
|
216
|
-
|
217
|
-
|
218
|
-
};
|
219
|
-
}(select, fontName));
|
154
|
+
select.addEventListener("click", function () {
|
155
|
+
selectFont(fontName, select.checked);
|
156
|
+
});
|
220
157
|
font.appendChild(select);
|
221
158
|
font.appendChild(name);
|
222
|
-
font.appendChild(document.createTextNode(
|
159
|
+
font.appendChild(document.createTextNode(" "));
|
223
160
|
font.appendChild(download);
|
224
|
-
font.appendChild(document.createTextNode(
|
161
|
+
font.appendChild(document.createTextNode(" "));
|
225
162
|
font.appendChild(logIt);
|
226
163
|
font.appendChild(moreInfo);
|
227
164
|
fonts.appendChild(font);
|
228
|
-
setTimeout(
|
229
|
-
if (
|
165
|
+
setTimeout(() => {
|
166
|
+
if (this.active) {
|
230
167
|
resetSelection();
|
231
168
|
}
|
232
169
|
}, 2000);
|
@@ -243,25 +180,24 @@ var StepperManager = function StepperManagerClosure() {
|
|
243
180
|
var stepperChooser = null;
|
244
181
|
var breakPoints = Object.create(null);
|
245
182
|
return {
|
246
|
-
id:
|
247
|
-
name:
|
183
|
+
id: "Stepper",
|
184
|
+
name: "Stepper",
|
248
185
|
panel: null,
|
249
186
|
manager: null,
|
250
187
|
init: function init(pdfjsLib) {
|
251
188
|
var self = this;
|
252
|
-
|
253
|
-
|
254
|
-
stepperChooser
|
255
|
-
stepperChooser.addEventListener('change', function (event) {
|
189
|
+
stepperControls = document.createElement("div");
|
190
|
+
stepperChooser = document.createElement("select");
|
191
|
+
stepperChooser.addEventListener("change", function (event) {
|
256
192
|
self.selectStepper(this.value);
|
257
193
|
});
|
258
194
|
stepperControls.appendChild(stepperChooser);
|
259
|
-
stepperDiv = document.createElement(
|
195
|
+
stepperDiv = document.createElement("div");
|
260
196
|
this.panel.appendChild(stepperControls);
|
261
197
|
this.panel.appendChild(stepperDiv);
|
262
198
|
|
263
|
-
if (sessionStorage.getItem(
|
264
|
-
breakPoints = JSON.parse(sessionStorage.getItem(
|
199
|
+
if (sessionStorage.getItem("pdfjsBreakPoints")) {
|
200
|
+
breakPoints = JSON.parse(sessionStorage.getItem("pdfjsBreakPoints"));
|
265
201
|
}
|
266
202
|
|
267
203
|
opMap = Object.create(null);
|
@@ -271,20 +207,20 @@ var StepperManager = function StepperManagerClosure() {
|
|
271
207
|
}
|
272
208
|
},
|
273
209
|
cleanup: function cleanup() {
|
274
|
-
stepperChooser.textContent =
|
275
|
-
stepperDiv.textContent =
|
210
|
+
stepperChooser.textContent = "";
|
211
|
+
stepperDiv.textContent = "";
|
276
212
|
steppers = [];
|
277
213
|
},
|
278
214
|
enabled: false,
|
279
215
|
active: false,
|
280
216
|
create: function create(pageIndex) {
|
281
|
-
var debug = document.createElement(
|
282
|
-
debug.id =
|
283
|
-
debug.setAttribute(
|
284
|
-
debug.className =
|
217
|
+
var debug = document.createElement("div");
|
218
|
+
debug.id = "stepper" + pageIndex;
|
219
|
+
debug.setAttribute("hidden", true);
|
220
|
+
debug.className = "stepper";
|
285
221
|
stepperDiv.appendChild(debug);
|
286
|
-
var b = document.createElement(
|
287
|
-
b.textContent =
|
222
|
+
var b = document.createElement("option");
|
223
|
+
b.textContent = "Page " + (pageIndex + 1);
|
288
224
|
b.value = pageIndex;
|
289
225
|
stepperChooser.appendChild(b);
|
290
226
|
var initBreakPoints = breakPoints[pageIndex] || [];
|
@@ -309,9 +245,9 @@ var StepperManager = function StepperManagerClosure() {
|
|
309
245
|
var stepper = steppers[i];
|
310
246
|
|
311
247
|
if (stepper.pageIndex === pageIndex) {
|
312
|
-
stepper.panel.removeAttribute(
|
248
|
+
stepper.panel.removeAttribute("hidden");
|
313
249
|
} else {
|
314
|
-
stepper.panel.setAttribute(
|
250
|
+
stepper.panel.setAttribute("hidden", true);
|
315
251
|
}
|
316
252
|
}
|
317
253
|
|
@@ -324,7 +260,7 @@ var StepperManager = function StepperManagerClosure() {
|
|
324
260
|
},
|
325
261
|
saveBreakPoints: function saveBreakPoints(pageIndex, bps) {
|
326
262
|
breakPoints[pageIndex] = bps;
|
327
|
-
sessionStorage.setItem(
|
263
|
+
sessionStorage.setItem("pdfjsBreakPoints", JSON.stringify(breakPoints));
|
328
264
|
}
|
329
265
|
};
|
330
266
|
}();
|
@@ -341,16 +277,16 @@ var Stepper = function StepperClosure() {
|
|
341
277
|
}
|
342
278
|
|
343
279
|
function simplifyArgs(args) {
|
344
|
-
if (typeof args ===
|
280
|
+
if (typeof args === "string") {
|
345
281
|
var MAX_STRING_LENGTH = 75;
|
346
|
-
return args.length <= MAX_STRING_LENGTH ? args : args.substring(0, MAX_STRING_LENGTH) +
|
282
|
+
return args.length <= MAX_STRING_LENGTH ? args : args.substring(0, MAX_STRING_LENGTH) + "...";
|
347
283
|
}
|
348
284
|
|
349
|
-
if (
|
285
|
+
if (typeof args !== "object" || args === null) {
|
350
286
|
return args;
|
351
287
|
}
|
352
288
|
|
353
|
-
if (
|
289
|
+
if ("length" in args) {
|
354
290
|
var simpleArgs = [],
|
355
291
|
i,
|
356
292
|
ii;
|
@@ -361,7 +297,7 @@ var Stepper = function StepperClosure() {
|
|
361
297
|
}
|
362
298
|
|
363
299
|
if (i < args.length) {
|
364
|
-
simpleArgs.push(
|
300
|
+
simpleArgs.push("...");
|
365
301
|
}
|
366
302
|
|
367
303
|
return simpleArgs;
|
@@ -389,16 +325,16 @@ var Stepper = function StepperClosure() {
|
|
389
325
|
Stepper.prototype = {
|
390
326
|
init: function init(operatorList) {
|
391
327
|
var panel = this.panel;
|
392
|
-
var content = c(
|
393
|
-
var table = c(
|
328
|
+
var content = c("div", "c=continue, s=step");
|
329
|
+
var table = c("table");
|
394
330
|
content.appendChild(table);
|
395
331
|
table.cellSpacing = 0;
|
396
|
-
var headerRow = c(
|
332
|
+
var headerRow = c("tr");
|
397
333
|
table.appendChild(headerRow);
|
398
|
-
headerRow.appendChild(c(
|
399
|
-
headerRow.appendChild(c(
|
400
|
-
headerRow.appendChild(c(
|
401
|
-
headerRow.appendChild(c(
|
334
|
+
headerRow.appendChild(c("th", "Break"));
|
335
|
+
headerRow.appendChild(c("th", "Idx"));
|
336
|
+
headerRow.appendChild(c("th", "fn"));
|
337
|
+
headerRow.appendChild(c("th", "args"));
|
402
338
|
panel.appendChild(content);
|
403
339
|
this.table = table;
|
404
340
|
this.updateOperatorList(operatorList);
|
@@ -428,26 +364,26 @@ var Stepper = function StepperClosure() {
|
|
428
364
|
var operatorsToDisplay = Math.min(MAX_OPERATORS_COUNT, operatorList.fnArray.length);
|
429
365
|
|
430
366
|
for (var i = this.operatorListIdx; i < operatorsToDisplay; i++) {
|
431
|
-
var line = c(
|
432
|
-
line.className =
|
367
|
+
var line = c("tr");
|
368
|
+
line.className = "line";
|
433
369
|
line.dataset.idx = i;
|
434
370
|
chunk.appendChild(line);
|
435
371
|
var checked = this.breakPoints.includes(i);
|
436
372
|
var args = operatorList.argsArray[i] || [];
|
437
|
-
var breakCell = c(
|
438
|
-
var cbox = c(
|
439
|
-
cbox.type =
|
440
|
-
cbox.className =
|
373
|
+
var breakCell = c("td");
|
374
|
+
var cbox = c("input");
|
375
|
+
cbox.type = "checkbox";
|
376
|
+
cbox.className = "points";
|
441
377
|
cbox.checked = checked;
|
442
378
|
cbox.dataset.idx = i;
|
443
379
|
cbox.onclick = cboxOnClick;
|
444
380
|
breakCell.appendChild(cbox);
|
445
381
|
line.appendChild(breakCell);
|
446
|
-
line.appendChild(c(
|
382
|
+
line.appendChild(c("td", i.toString()));
|
447
383
|
var fn = opMap[operatorList.fnArray[i]];
|
448
384
|
var decArgs = args;
|
449
385
|
|
450
|
-
if (fn ===
|
386
|
+
if (fn === "showText") {
|
451
387
|
var glyphs = args[0];
|
452
388
|
var newArgs = [];
|
453
389
|
var str = [];
|
@@ -455,11 +391,11 @@ var Stepper = function StepperClosure() {
|
|
455
391
|
for (var j = 0; j < glyphs.length; j++) {
|
456
392
|
var glyph = glyphs[j];
|
457
393
|
|
458
|
-
if (
|
394
|
+
if (typeof glyph === "object" && glyph !== null) {
|
459
395
|
str.push(glyph.fontChar);
|
460
396
|
} else {
|
461
397
|
if (str.length > 0) {
|
462
|
-
newArgs.push(str.join(
|
398
|
+
newArgs.push(str.join(""));
|
463
399
|
str = [];
|
464
400
|
}
|
465
401
|
|
@@ -468,19 +404,19 @@ var Stepper = function StepperClosure() {
|
|
468
404
|
}
|
469
405
|
|
470
406
|
if (str.length > 0) {
|
471
|
-
newArgs.push(str.join(
|
407
|
+
newArgs.push(str.join(""));
|
472
408
|
}
|
473
409
|
|
474
410
|
decArgs = [newArgs];
|
475
411
|
}
|
476
412
|
|
477
|
-
line.appendChild(c(
|
478
|
-
line.appendChild(c(
|
413
|
+
line.appendChild(c("td", fn));
|
414
|
+
line.appendChild(c("td", JSON.stringify(simplifyArgs(decArgs))));
|
479
415
|
}
|
480
416
|
|
481
417
|
if (operatorsToDisplay < operatorList.fnArray.length) {
|
482
|
-
line = c(
|
483
|
-
var lastCell = c(
|
418
|
+
line = c("tr");
|
419
|
+
var lastCell = c("td", "...");
|
484
420
|
lastCell.colspan = 4;
|
485
421
|
chunk.appendChild(lastCell);
|
486
422
|
}
|
@@ -507,17 +443,17 @@ var Stepper = function StepperClosure() {
|
|
507
443
|
var dom = document;
|
508
444
|
self.currentIdx = idx;
|
509
445
|
|
510
|
-
var listener = function
|
446
|
+
var listener = function (e) {
|
511
447
|
switch (e.keyCode) {
|
512
448
|
case 83:
|
513
|
-
dom.removeEventListener(
|
449
|
+
dom.removeEventListener("keydown", listener);
|
514
450
|
self.nextBreakPoint = self.currentIdx + 1;
|
515
451
|
self.goTo(-1);
|
516
452
|
callback();
|
517
453
|
break;
|
518
454
|
|
519
455
|
case 67:
|
520
|
-
dom.removeEventListener(
|
456
|
+
dom.removeEventListener("keydown", listener);
|
521
457
|
var breakPoint = self.getNextBreakPoint();
|
522
458
|
self.nextBreakPoint = breakPoint;
|
523
459
|
self.goTo(-1);
|
@@ -526,17 +462,17 @@ var Stepper = function StepperClosure() {
|
|
526
462
|
}
|
527
463
|
};
|
528
464
|
|
529
|
-
dom.addEventListener(
|
465
|
+
dom.addEventListener("keydown", listener);
|
530
466
|
self.goTo(idx);
|
531
467
|
},
|
532
468
|
goTo: function goTo(idx) {
|
533
|
-
var allRows = this.panel.getElementsByClassName(
|
469
|
+
var allRows = this.panel.getElementsByClassName("line");
|
534
470
|
|
535
471
|
for (var x = 0, xx = allRows.length; x < xx; ++x) {
|
536
472
|
var row = allRows[x];
|
537
473
|
|
538
474
|
if ((row.dataset.idx | 0) === idx) {
|
539
|
-
row.style.backgroundColor =
|
475
|
+
row.style.backgroundColor = "rgb(251,250,207)";
|
540
476
|
row.scrollIntoView();
|
541
477
|
} else {
|
542
478
|
row.style.backgroundColor = null;
|
@@ -567,16 +503,17 @@ var Stats = function Stats() {
|
|
567
503
|
}
|
568
504
|
|
569
505
|
return {
|
570
|
-
id:
|
571
|
-
name:
|
506
|
+
id: "Stats",
|
507
|
+
name: "Stats",
|
572
508
|
panel: null,
|
573
509
|
manager: null,
|
574
|
-
|
575
|
-
|
576
|
-
|
510
|
+
|
511
|
+
init(pdfjsLib) {},
|
512
|
+
|
577
513
|
enabled: false,
|
578
514
|
active: false,
|
579
|
-
|
515
|
+
|
516
|
+
add(pageNumber, stat) {
|
580
517
|
if (!stat) {
|
581
518
|
return;
|
582
519
|
}
|
@@ -584,22 +521,22 @@ var Stats = function Stats() {
|
|
584
521
|
var statsIndex = getStatIndex(pageNumber);
|
585
522
|
|
586
523
|
if (statsIndex !== false) {
|
587
|
-
|
524
|
+
const b = stats[statsIndex];
|
588
525
|
this.panel.removeChild(b.div);
|
589
526
|
stats.splice(statsIndex, 1);
|
590
527
|
}
|
591
528
|
|
592
|
-
var wrapper = document.createElement(
|
593
|
-
wrapper.className =
|
594
|
-
var title = document.createElement(
|
595
|
-
title.className =
|
596
|
-
title.textContent =
|
597
|
-
var statsDiv = document.createElement(
|
529
|
+
var wrapper = document.createElement("div");
|
530
|
+
wrapper.className = "stats";
|
531
|
+
var title = document.createElement("div");
|
532
|
+
title.className = "title";
|
533
|
+
title.textContent = "Page: " + pageNumber;
|
534
|
+
var statsDiv = document.createElement("div");
|
598
535
|
statsDiv.textContent = stat.toString();
|
599
536
|
wrapper.appendChild(title);
|
600
537
|
wrapper.appendChild(statsDiv);
|
601
538
|
stats.push({
|
602
|
-
pageNumber
|
539
|
+
pageNumber,
|
603
540
|
div: wrapper
|
604
541
|
});
|
605
542
|
stats.sort(function (a, b) {
|
@@ -611,10 +548,12 @@ var Stats = function Stats() {
|
|
611
548
|
this.panel.appendChild(stats[i].div);
|
612
549
|
}
|
613
550
|
},
|
614
|
-
|
551
|
+
|
552
|
+
cleanup() {
|
615
553
|
stats = [];
|
616
554
|
clear(this.panel);
|
617
555
|
}
|
556
|
+
|
618
557
|
};
|
619
558
|
}();
|
620
559
|
|
@@ -624,11 +563,12 @@ window.PDFBug = function PDFBugClosure() {
|
|
624
563
|
var activePanel = null;
|
625
564
|
return {
|
626
565
|
tools: [FontInspector, StepperManager, Stats],
|
627
|
-
|
566
|
+
|
567
|
+
enable(ids) {
|
628
568
|
var all = false,
|
629
569
|
tools = this.tools;
|
630
570
|
|
631
|
-
if (ids.length === 1 && ids[0] ===
|
571
|
+
if (ids.length === 1 && ids[0] === "all") {
|
632
572
|
all = true;
|
633
573
|
}
|
634
574
|
|
@@ -650,26 +590,27 @@ window.PDFBug = function PDFBugClosure() {
|
|
650
590
|
});
|
651
591
|
}
|
652
592
|
},
|
653
|
-
|
654
|
-
|
655
|
-
ui
|
656
|
-
|
657
|
-
controls.
|
593
|
+
|
594
|
+
init(pdfjsLib, container) {
|
595
|
+
var ui = document.createElement("div");
|
596
|
+
ui.id = "PDFBug";
|
597
|
+
var controls = document.createElement("div");
|
598
|
+
controls.setAttribute("class", "controls");
|
658
599
|
ui.appendChild(controls);
|
659
|
-
var panels = document.createElement(
|
660
|
-
panels.setAttribute(
|
600
|
+
var panels = document.createElement("div");
|
601
|
+
panels.setAttribute("class", "panels");
|
661
602
|
ui.appendChild(panels);
|
662
603
|
container.appendChild(ui);
|
663
|
-
container.style.right = panelWidth +
|
604
|
+
container.style.right = panelWidth + "px";
|
664
605
|
var tools = this.tools;
|
665
606
|
var self = this;
|
666
607
|
|
667
608
|
for (var i = 0; i < tools.length; ++i) {
|
668
609
|
var tool = tools[i];
|
669
|
-
var panel = document.createElement(
|
670
|
-
var panelButton = document.createElement(
|
610
|
+
var panel = document.createElement("div");
|
611
|
+
var panelButton = document.createElement("button");
|
671
612
|
panelButton.textContent = tool.name;
|
672
|
-
panelButton.addEventListener(
|
613
|
+
panelButton.addEventListener("click", function (selected) {
|
673
614
|
return function (event) {
|
674
615
|
event.preventDefault();
|
675
616
|
self.selectPanel(selected);
|
@@ -683,7 +624,7 @@ window.PDFBug = function PDFBugClosure() {
|
|
683
624
|
if (tool.enabled) {
|
684
625
|
tool.init(pdfjsLib);
|
685
626
|
} else {
|
686
|
-
panel.textContent = tool.name +
|
627
|
+
panel.textContent = tool.name + " is disabled. To enable add " + ' "' + tool.id + '" to the pdfBug parameter ' + "and refresh (separate multiple by commas).";
|
687
628
|
}
|
688
629
|
|
689
630
|
buttons.push(panelButton);
|
@@ -691,15 +632,17 @@ window.PDFBug = function PDFBugClosure() {
|
|
691
632
|
|
692
633
|
this.selectPanel(0);
|
693
634
|
},
|
694
|
-
|
635
|
+
|
636
|
+
cleanup() {
|
695
637
|
for (var i = 0, ii = this.tools.length; i < ii; i++) {
|
696
638
|
if (this.tools[i].enabled) {
|
697
639
|
this.tools[i].cleanup();
|
698
640
|
}
|
699
641
|
}
|
700
642
|
},
|
701
|
-
|
702
|
-
|
643
|
+
|
644
|
+
selectPanel(index) {
|
645
|
+
if (typeof index !== "number") {
|
703
646
|
index = this.tools.indexOf(index);
|
704
647
|
}
|
705
648
|
|
@@ -712,15 +655,16 @@ window.PDFBug = function PDFBugClosure() {
|
|
712
655
|
|
713
656
|
for (var j = 0; j < tools.length; ++j) {
|
714
657
|
if (j === index) {
|
715
|
-
buttons[j].setAttribute(
|
658
|
+
buttons[j].setAttribute("class", "active");
|
716
659
|
tools[j].active = true;
|
717
|
-
tools[j].panel.removeAttribute(
|
660
|
+
tools[j].panel.removeAttribute("hidden");
|
718
661
|
} else {
|
719
|
-
buttons[j].setAttribute(
|
662
|
+
buttons[j].setAttribute("class", "");
|
720
663
|
tools[j].active = false;
|
721
|
-
tools[j].panel.setAttribute(
|
664
|
+
tools[j].panel.setAttribute("hidden", "true");
|
722
665
|
}
|
723
666
|
}
|
724
667
|
}
|
668
|
+
|
725
669
|
};
|
726
670
|
}();
|