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
@@ -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.
|
@@ -26,43 +26,43 @@ Object.defineProperty(exports, "__esModule", {
|
|
26
26
|
});
|
27
27
|
exports.PDFPrintService = PDFPrintService;
|
28
28
|
|
29
|
-
var _ui_utils = require("./ui_utils");
|
29
|
+
var _ui_utils = require("./ui_utils.js");
|
30
30
|
|
31
|
-
var _app = require("./app");
|
31
|
+
var _app = require("./app.js");
|
32
32
|
|
33
|
-
var
|
33
|
+
var _app_options = require("./app_options.js");
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
let activeService = null;
|
36
|
+
let overlayManager = null;
|
37
37
|
|
38
38
|
function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) {
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
const scratchCanvas = activeService.scratchCanvas;
|
40
|
+
const PRINT_RESOLUTION = _app_options.AppOptions.get("printResolution") || 150;
|
41
|
+
const PRINT_UNITS = PRINT_RESOLUTION / 72.0;
|
42
42
|
scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);
|
43
43
|
scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
const width = Math.floor(size.width * _ui_utils.CSS_UNITS) + "px";
|
45
|
+
const height = Math.floor(size.height * _ui_utils.CSS_UNITS) + "px";
|
46
|
+
const ctx = scratchCanvas.getContext("2d");
|
47
47
|
ctx.save();
|
48
|
-
ctx.fillStyle =
|
48
|
+
ctx.fillStyle = "rgb(255, 255, 255)";
|
49
49
|
ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);
|
50
50
|
ctx.restore();
|
51
51
|
return pdfDocument.getPage(pageNumber).then(function (pdfPage) {
|
52
|
-
|
52
|
+
const renderContext = {
|
53
53
|
canvasContext: ctx,
|
54
54
|
transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],
|
55
55
|
viewport: pdfPage.getViewport({
|
56
56
|
scale: 1,
|
57
57
|
rotation: size.rotation
|
58
58
|
}),
|
59
|
-
intent:
|
59
|
+
intent: "print"
|
60
60
|
};
|
61
61
|
return pdfPage.render(renderContext).promise;
|
62
62
|
}).then(function () {
|
63
63
|
return {
|
64
|
-
width
|
65
|
-
height
|
64
|
+
width,
|
65
|
+
height
|
66
66
|
};
|
67
67
|
});
|
68
68
|
}
|
@@ -72,35 +72,38 @@ function PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n) {
|
|
72
72
|
this.pagesOverview = pagesOverview;
|
73
73
|
this.printContainer = printContainer;
|
74
74
|
this.l10n = l10n || _ui_utils.NullL10n;
|
75
|
-
this.disableCreateObjectURL =
|
75
|
+
this.disableCreateObjectURL = _app_options.AppOptions.get("disableCreateObjectURL");
|
76
76
|
this.currentPage = -1;
|
77
|
-
this.scratchCanvas = document.createElement(
|
77
|
+
this.scratchCanvas = document.createElement("canvas");
|
78
78
|
}
|
79
79
|
|
80
80
|
PDFPrintService.prototype = {
|
81
|
-
layout
|
81
|
+
layout() {
|
82
82
|
this.throwIfInactive();
|
83
|
-
|
84
|
-
body.setAttribute(
|
85
|
-
|
83
|
+
const body = document.querySelector("body");
|
84
|
+
body.setAttribute("data-pdfjsprinting", true);
|
85
|
+
const hasEqualPageSizes = this.pagesOverview.every(function (size) {
|
86
86
|
return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height;
|
87
87
|
}, this);
|
88
88
|
|
89
89
|
if (!hasEqualPageSizes) {
|
90
|
-
console.warn(
|
90
|
+
console.warn("Not all pages have the same size. The printed " + "result may be incorrect!");
|
91
91
|
}
|
92
92
|
|
93
|
-
this.pageStyleSheet = document.createElement(
|
94
|
-
|
95
|
-
this.pageStyleSheet.textContent =
|
93
|
+
this.pageStyleSheet = document.createElement("style");
|
94
|
+
const pageSize = this.pagesOverview[0];
|
95
|
+
this.pageStyleSheet.textContent = "@supports ((size:A4) and (size:1pt 1pt)) {" + "@page { size: " + pageSize.width + "pt " + pageSize.height + "pt;}" + "}";
|
96
96
|
body.appendChild(this.pageStyleSheet);
|
97
97
|
},
|
98
|
-
|
98
|
+
|
99
|
+
destroy() {
|
99
100
|
if (activeService !== this) {
|
100
101
|
return;
|
101
102
|
}
|
102
103
|
|
103
|
-
this.printContainer.textContent =
|
104
|
+
this.printContainer.textContent = "";
|
105
|
+
const body = document.querySelector("body");
|
106
|
+
body.removeAttribute("data-pdfjsprinting");
|
104
107
|
|
105
108
|
if (this.pageStyleSheet) {
|
106
109
|
this.pageStyleSheet.remove();
|
@@ -111,52 +114,52 @@ PDFPrintService.prototype = {
|
|
111
114
|
this.scratchCanvas = null;
|
112
115
|
activeService = null;
|
113
116
|
ensureOverlay().then(function () {
|
114
|
-
if (overlayManager.active !==
|
117
|
+
if (overlayManager.active !== "printServiceOverlay") {
|
115
118
|
return;
|
116
119
|
}
|
117
120
|
|
118
|
-
overlayManager.close(
|
121
|
+
overlayManager.close("printServiceOverlay");
|
119
122
|
});
|
120
123
|
},
|
121
|
-
renderPages: function renderPages() {
|
122
|
-
var _this = this;
|
123
124
|
|
124
|
-
|
125
|
+
renderPages() {
|
126
|
+
const pageCount = this.pagesOverview.length;
|
125
127
|
|
126
|
-
|
127
|
-
|
128
|
+
const renderNextPage = (resolve, reject) => {
|
129
|
+
this.throwIfInactive();
|
128
130
|
|
129
|
-
if (++
|
130
|
-
renderProgress(pageCount, pageCount,
|
131
|
+
if (++this.currentPage >= pageCount) {
|
132
|
+
renderProgress(pageCount, pageCount, this.l10n);
|
131
133
|
resolve();
|
132
134
|
return;
|
133
135
|
}
|
134
136
|
|
135
|
-
|
136
|
-
renderProgress(index, pageCount,
|
137
|
-
renderPage(
|
137
|
+
const index = this.currentPage;
|
138
|
+
renderProgress(index, pageCount, this.l10n);
|
139
|
+
renderPage(this, this.pdfDocument, index + 1, this.pagesOverview[index]).then(this.useRenderedPage.bind(this)).then(function () {
|
138
140
|
renderNextPage(resolve, reject);
|
139
141
|
}, reject);
|
140
142
|
};
|
141
143
|
|
142
144
|
return new Promise(renderNextPage);
|
143
145
|
},
|
144
|
-
|
146
|
+
|
147
|
+
useRenderedPage(printItem) {
|
145
148
|
this.throwIfInactive();
|
146
|
-
|
149
|
+
const img = document.createElement("img");
|
147
150
|
img.style.width = printItem.width;
|
148
151
|
img.style.height = printItem.height;
|
149
|
-
|
152
|
+
const scratchCanvas = this.scratchCanvas;
|
150
153
|
|
151
|
-
if (
|
154
|
+
if ("toBlob" in scratchCanvas && !this.disableCreateObjectURL) {
|
152
155
|
scratchCanvas.toBlob(function (blob) {
|
153
|
-
img.src =
|
156
|
+
img.src = URL.createObjectURL(blob);
|
154
157
|
});
|
155
158
|
} else {
|
156
159
|
img.src = scratchCanvas.toDataURL();
|
157
160
|
}
|
158
161
|
|
159
|
-
|
162
|
+
const wrapper = document.createElement("div");
|
160
163
|
wrapper.appendChild(img);
|
161
164
|
this.printContainer.appendChild(wrapper);
|
162
165
|
return new Promise(function (resolve, reject) {
|
@@ -164,13 +167,12 @@ PDFPrintService.prototype = {
|
|
164
167
|
img.onerror = reject;
|
165
168
|
});
|
166
169
|
},
|
167
|
-
performPrint: function performPrint() {
|
168
|
-
var _this2 = this;
|
169
170
|
|
171
|
+
performPrint() {
|
170
172
|
this.throwIfInactive();
|
171
|
-
return new Promise(
|
172
|
-
setTimeout(
|
173
|
-
if (!
|
173
|
+
return new Promise(resolve => {
|
174
|
+
setTimeout(() => {
|
175
|
+
if (!this.active) {
|
174
176
|
resolve();
|
175
177
|
return;
|
176
178
|
}
|
@@ -185,40 +187,41 @@ PDFPrintService.prototype = {
|
|
185
187
|
return this === activeService;
|
186
188
|
},
|
187
189
|
|
188
|
-
throwIfInactive
|
190
|
+
throwIfInactive() {
|
189
191
|
if (!this.active) {
|
190
|
-
throw new Error(
|
192
|
+
throw new Error("This print request was cancelled or completed.");
|
191
193
|
}
|
192
194
|
}
|
195
|
+
|
193
196
|
};
|
194
|
-
|
197
|
+
const print = window.print;
|
195
198
|
|
196
|
-
window.print = function
|
199
|
+
window.print = function () {
|
197
200
|
if (activeService) {
|
198
|
-
console.warn(
|
201
|
+
console.warn("Ignored window.print() because of a pending print job.");
|
199
202
|
return;
|
200
203
|
}
|
201
204
|
|
202
205
|
ensureOverlay().then(function () {
|
203
206
|
if (activeService) {
|
204
|
-
overlayManager.open(
|
207
|
+
overlayManager.open("printServiceOverlay");
|
205
208
|
}
|
206
209
|
});
|
207
210
|
|
208
211
|
try {
|
209
|
-
dispatchEvent(
|
212
|
+
dispatchEvent("beforeprint");
|
210
213
|
} finally {
|
211
214
|
if (!activeService) {
|
212
|
-
console.error(
|
215
|
+
console.error("Expected print service to be initialized.");
|
213
216
|
ensureOverlay().then(function () {
|
214
|
-
if (overlayManager.active ===
|
215
|
-
overlayManager.close(
|
217
|
+
if (overlayManager.active === "printServiceOverlay") {
|
218
|
+
overlayManager.close("printServiceOverlay");
|
216
219
|
}
|
217
220
|
});
|
218
221
|
return;
|
219
222
|
}
|
220
223
|
|
221
|
-
|
224
|
+
const activeServiceOnEntry = activeService;
|
222
225
|
activeService.renderPages().then(function () {
|
223
226
|
return activeServiceOnEntry.performPrint();
|
224
227
|
}).catch(function () {}).then(function () {
|
@@ -230,40 +233,34 @@ window.print = function print() {
|
|
230
233
|
};
|
231
234
|
|
232
235
|
function dispatchEvent(eventType) {
|
233
|
-
|
234
|
-
event.initCustomEvent(eventType, false, false,
|
236
|
+
const event = document.createEvent("CustomEvent");
|
237
|
+
event.initCustomEvent(eventType, false, false, "custom");
|
235
238
|
window.dispatchEvent(event);
|
236
239
|
}
|
237
240
|
|
238
241
|
function abort() {
|
239
242
|
if (activeService) {
|
240
243
|
activeService.destroy();
|
241
|
-
dispatchEvent(
|
244
|
+
dispatchEvent("afterprint");
|
242
245
|
}
|
243
246
|
}
|
244
247
|
|
245
248
|
function renderProgress(index, total, l10n) {
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
249
|
+
const progressContainer = document.getElementById("printServiceOverlay");
|
250
|
+
const progress = Math.round(100 * index / total);
|
251
|
+
const progressBar = progressContainer.querySelector("progress");
|
252
|
+
const progressPerc = progressContainer.querySelector(".relative-progress");
|
250
253
|
progressBar.value = progress;
|
251
|
-
l10n.get(
|
252
|
-
progress
|
253
|
-
}, progress +
|
254
|
+
l10n.get("print_progress_percent", {
|
255
|
+
progress
|
256
|
+
}, progress + "%").then(msg => {
|
254
257
|
progressPerc.textContent = msg;
|
255
258
|
});
|
256
259
|
}
|
257
260
|
|
258
|
-
|
259
|
-
window.addEventListener('keydown', function (event) {
|
261
|
+
window.addEventListener("keydown", function (event) {
|
260
262
|
if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) {
|
261
263
|
window.print();
|
262
|
-
|
263
|
-
if (hasAttachEvent) {
|
264
|
-
return;
|
265
|
-
}
|
266
|
-
|
267
264
|
event.preventDefault();
|
268
265
|
|
269
266
|
if (event.stopImmediatePropagation) {
|
@@ -271,45 +268,32 @@ window.addEventListener('keydown', function (event) {
|
|
271
268
|
} else {
|
272
269
|
event.stopPropagation();
|
273
270
|
}
|
274
|
-
|
275
|
-
return;
|
276
271
|
}
|
277
272
|
}, true);
|
278
273
|
|
279
|
-
if (
|
280
|
-
|
281
|
-
event
|
282
|
-
|
283
|
-
if (event.keyCode === 80 && event.ctrlKey) {
|
284
|
-
event.keyCode = 0;
|
285
|
-
return false;
|
286
|
-
}
|
287
|
-
});
|
288
|
-
}
|
289
|
-
|
290
|
-
if ('onbeforeprint' in window) {
|
291
|
-
var stopPropagationIfNeeded = function stopPropagationIfNeeded(event) {
|
292
|
-
if (event.detail !== 'custom' && event.stopImmediatePropagation) {
|
274
|
+
if ("onbeforeprint" in window) {
|
275
|
+
const stopPropagationIfNeeded = function (event) {
|
276
|
+
if (event.detail !== "custom" && event.stopImmediatePropagation) {
|
293
277
|
event.stopImmediatePropagation();
|
294
278
|
}
|
295
279
|
};
|
296
280
|
|
297
|
-
window.addEventListener(
|
298
|
-
window.addEventListener(
|
281
|
+
window.addEventListener("beforeprint", stopPropagationIfNeeded);
|
282
|
+
window.addEventListener("afterprint", stopPropagationIfNeeded);
|
299
283
|
}
|
300
284
|
|
301
|
-
|
285
|
+
let overlayPromise;
|
302
286
|
|
303
287
|
function ensureOverlay() {
|
304
288
|
if (!overlayPromise) {
|
305
289
|
overlayManager = _app.PDFViewerApplication.overlayManager;
|
306
290
|
|
307
291
|
if (!overlayManager) {
|
308
|
-
throw new Error(
|
292
|
+
throw new Error("The overlay manager has not yet been initialized.");
|
309
293
|
}
|
310
294
|
|
311
|
-
overlayPromise = overlayManager.register(
|
312
|
-
document.getElementById(
|
295
|
+
overlayPromise = overlayManager.register("printServiceOverlay", document.getElementById("printServiceOverlay"), abort, true);
|
296
|
+
document.getElementById("printCancel").onclick = abort;
|
313
297
|
}
|
314
298
|
|
315
299
|
return overlayPromise;
|
@@ -317,12 +301,14 @@ function ensureOverlay() {
|
|
317
301
|
|
318
302
|
_app.PDFPrintServiceFactory.instance = {
|
319
303
|
supportsPrinting: true,
|
320
|
-
|
304
|
+
|
305
|
+
createPrintService(pdfDocument, pagesOverview, printContainer, l10n) {
|
321
306
|
if (activeService) {
|
322
|
-
throw new Error(
|
307
|
+
throw new Error("The print service is created and active.");
|
323
308
|
}
|
324
309
|
|
325
310
|
activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n);
|
326
311
|
return activeService;
|
327
312
|
}
|
313
|
+
|
328
314
|
};
|
@@ -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.
|
@@ -25,15 +25,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
25
25
|
value: true
|
26
26
|
});
|
27
27
|
exports.PDFRenderingQueue = exports.RenderingStates = void 0;
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
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); } }
|
32
|
-
|
33
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
34
|
-
|
35
|
-
var CLEANUP_TIMEOUT = 30000;
|
36
|
-
var RenderingStates = {
|
28
|
+
const CLEANUP_TIMEOUT = 30000;
|
29
|
+
const RenderingStates = {
|
37
30
|
INITIAL: 0,
|
38
31
|
RUNNING: 1,
|
39
32
|
PAUSED: 2,
|
@@ -41,12 +34,8 @@ var RenderingStates = {
|
|
41
34
|
};
|
42
35
|
exports.RenderingStates = RenderingStates;
|
43
36
|
|
44
|
-
|
45
|
-
|
46
|
-
function () {
|
47
|
-
function PDFRenderingQueue() {
|
48
|
-
_classCallCheck(this, PDFRenderingQueue);
|
49
|
-
|
37
|
+
class PDFRenderingQueue {
|
38
|
+
constructor() {
|
50
39
|
this.pdfViewer = null;
|
51
40
|
this.pdfThumbnailViewer = null;
|
52
41
|
this.onIdle = null;
|
@@ -56,120 +45,107 @@ function () {
|
|
56
45
|
this.isThumbnailViewEnabled = false;
|
57
46
|
}
|
58
47
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
this.pdfViewer = pdfViewer;
|
63
|
-
}
|
64
|
-
}, {
|
65
|
-
key: "setThumbnailViewer",
|
66
|
-
value: function setThumbnailViewer(pdfThumbnailViewer) {
|
67
|
-
this.pdfThumbnailViewer = pdfThumbnailViewer;
|
68
|
-
}
|
69
|
-
}, {
|
70
|
-
key: "isHighestPriority",
|
71
|
-
value: function isHighestPriority(view) {
|
72
|
-
return this.highestPriorityPage === view.renderingId;
|
73
|
-
}
|
74
|
-
}, {
|
75
|
-
key: "renderHighestPriority",
|
76
|
-
value: function renderHighestPriority(currentlyVisiblePages) {
|
77
|
-
if (this.idleTimeout) {
|
78
|
-
clearTimeout(this.idleTimeout);
|
79
|
-
this.idleTimeout = null;
|
80
|
-
}
|
81
|
-
|
82
|
-
if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {
|
83
|
-
return;
|
84
|
-
}
|
48
|
+
setViewer(pdfViewer) {
|
49
|
+
this.pdfViewer = pdfViewer;
|
50
|
+
}
|
85
51
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
}
|
90
|
-
}
|
52
|
+
setThumbnailViewer(pdfThumbnailViewer) {
|
53
|
+
this.pdfThumbnailViewer = pdfThumbnailViewer;
|
54
|
+
}
|
91
55
|
|
92
|
-
|
93
|
-
|
94
|
-
|
56
|
+
isHighestPriority(view) {
|
57
|
+
return this.highestPriorityPage === view.renderingId;
|
58
|
+
}
|
95
59
|
|
96
|
-
|
97
|
-
|
98
|
-
|
60
|
+
renderHighestPriority(currentlyVisiblePages) {
|
61
|
+
if (this.idleTimeout) {
|
62
|
+
clearTimeout(this.idleTimeout);
|
63
|
+
this.idleTimeout = null;
|
99
64
|
}
|
100
|
-
}, {
|
101
|
-
key: "getHighestPriority",
|
102
|
-
value: function getHighestPriority(visible, views, scrolledDown) {
|
103
|
-
var visibleViews = visible.views;
|
104
|
-
var numVisible = visibleViews.length;
|
105
65
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
for (var i = 0; i < numVisible; ++i) {
|
111
|
-
var view = visibleViews[i].view;
|
66
|
+
if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {
|
67
|
+
return;
|
68
|
+
}
|
112
69
|
|
113
|
-
|
114
|
-
|
115
|
-
|
70
|
+
if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) {
|
71
|
+
if (this.pdfThumbnailViewer.forceRendering()) {
|
72
|
+
return;
|
116
73
|
}
|
74
|
+
}
|
117
75
|
|
118
|
-
|
119
|
-
|
76
|
+
if (this.printing) {
|
77
|
+
return;
|
78
|
+
}
|
120
79
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
var previousPageIndex = visible.first.id - 2;
|
80
|
+
if (this.onIdle) {
|
81
|
+
this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);
|
82
|
+
}
|
83
|
+
}
|
126
84
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
}
|
85
|
+
getHighestPriority(visible, views, scrolledDown) {
|
86
|
+
const visibleViews = visible.views;
|
87
|
+
const numVisible = visibleViews.length;
|
131
88
|
|
89
|
+
if (numVisible === 0) {
|
132
90
|
return null;
|
133
91
|
}
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
92
|
+
|
93
|
+
for (let i = 0; i < numVisible; ++i) {
|
94
|
+
const view = visibleViews[i].view;
|
95
|
+
|
96
|
+
if (!this.isViewFinished(view)) {
|
97
|
+
return view;
|
98
|
+
}
|
138
99
|
}
|
139
|
-
}, {
|
140
|
-
key: "renderView",
|
141
|
-
value: function renderView(view) {
|
142
|
-
var _this = this;
|
143
100
|
|
144
|
-
|
145
|
-
|
146
|
-
return false;
|
101
|
+
if (scrolledDown) {
|
102
|
+
const nextPageIndex = visible.last.id;
|
147
103
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
104
|
+
if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) {
|
105
|
+
return views[nextPageIndex];
|
106
|
+
}
|
107
|
+
} else {
|
108
|
+
const previousPageIndex = visible.first.id - 2;
|
152
109
|
|
153
|
-
|
154
|
-
|
155
|
-
|
110
|
+
if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) {
|
111
|
+
return views[previousPageIndex];
|
112
|
+
}
|
113
|
+
}
|
156
114
|
|
157
|
-
|
158
|
-
|
115
|
+
return null;
|
116
|
+
}
|
159
117
|
|
160
|
-
|
161
|
-
|
162
|
-
|
118
|
+
isViewFinished(view) {
|
119
|
+
return view.renderingState === RenderingStates.FINISHED;
|
120
|
+
}
|
163
121
|
|
164
|
-
|
165
|
-
|
166
|
-
|
122
|
+
renderView(view) {
|
123
|
+
switch (view.renderingState) {
|
124
|
+
case RenderingStates.FINISHED:
|
125
|
+
return false;
|
167
126
|
|
168
|
-
|
127
|
+
case RenderingStates.PAUSED:
|
128
|
+
this.highestPriorityPage = view.renderingId;
|
129
|
+
view.resume();
|
130
|
+
break;
|
131
|
+
|
132
|
+
case RenderingStates.RUNNING:
|
133
|
+
this.highestPriorityPage = view.renderingId;
|
134
|
+
break;
|
135
|
+
|
136
|
+
case RenderingStates.INITIAL:
|
137
|
+
this.highestPriorityPage = view.renderingId;
|
138
|
+
view.draw().finally(() => {
|
139
|
+
this.renderHighestPriority();
|
140
|
+
}).catch(reason => {
|
141
|
+
console.error(`renderView: "${reason}"`);
|
142
|
+
});
|
143
|
+
break;
|
169
144
|
}
|
170
|
-
}]);
|
171
145
|
|
172
|
-
|
173
|
-
}
|
146
|
+
return true;
|
147
|
+
}
|
148
|
+
|
149
|
+
}
|
174
150
|
|
175
151
|
exports.PDFRenderingQueue = PDFRenderingQueue;
|