pdfjs-dist 2.0.943 → 2.4.456
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 +8286 -14230
- 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 +25500 -26628
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25473 -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 +57878 -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 +407 -0
- package/es5/web/pdf_viewer.js +7757 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +2887 -4094
- 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 +855 -778
- package/lib/core/arithmetic_decoder.js +325 -311
- package/lib/core/bidi.js +117 -50
- package/lib/core/ccitt.js +251 -89
- package/lib/core/ccitt_stream.js +26 -16
- package/lib/core/cff_parser.js +525 -197
- package/lib/core/charsets.js +6 -5
- package/lib/core/chunked_stream.js +541 -406
- package/lib/core/cmap.js +368 -253
- package/lib/core/colorspace.js +781 -800
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +609 -422
- package/lib/core/document.js +649 -481
- package/lib/core/encodings.js +33 -24
- package/lib/core/evaluator.js +1471 -736
- package/lib/core/font_renderer.js +289 -149
- package/lib/core/fonts.js +1067 -413
- package/lib/core/function.js +517 -287
- package/lib/core/glyphlist.js +4529 -4527
- package/lib/core/image.js +232 -114
- package/lib/core/image_utils.js +94 -0
- package/lib/core/jbig2.js +711 -342
- package/lib/core/jbig2_stream.js +31 -19
- package/lib/core/jpeg_stream.js +151 -26
- package/lib/core/jpg.js +433 -181
- package/lib/core/jpx.js +551 -143
- package/lib/core/jpx_stream.js +40 -28
- package/lib/core/metrics.js +2931 -2931
- package/lib/core/murmurhash3.js +104 -97
- package/lib/core/obj.js +1561 -1053
- package/lib/core/operator_list.js +192 -64
- package/lib/core/parser.js +1162 -864
- package/lib/core/pattern.js +224 -75
- package/lib/core/pdf_manager.js +154 -285
- package/lib/core/primitives.js +145 -69
- package/lib/core/ps_parser.js +212 -162
- package/lib/core/standard_fonts.js +245 -244
- package/lib/core/stream.js +353 -81
- package/lib/core/type1_parser.js +218 -68
- package/lib/core/unicode.js +1682 -1655
- package/lib/core/worker.js +233 -302
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +808 -862
- package/lib/display/api.js +1778 -1462
- package/lib/display/api_compatibility.js +14 -9
- package/lib/display/canvas.js +463 -140
- package/lib/display/content_disposition.js +86 -58
- package/lib/display/display_utils.js +524 -0
- package/lib/display/fetch_stream.js +202 -274
- package/lib/display/font_loader.js +311 -333
- package/lib/display/metadata.js +98 -88
- package/lib/display/network.js +343 -347
- package/lib/display/network_utils.js +46 -26
- package/lib/display/node_stream.js +326 -404
- package/lib/display/pattern_helper.js +168 -69
- package/lib/display/svg.js +1296 -885
- package/lib/display/text_layer.js +229 -103
- package/lib/display/transport_stream.js +290 -250
- package/lib/display/webgl.js +116 -83
- package/lib/display/worker_options.js +6 -5
- package/lib/display/xml_parser.js +358 -337
- package/lib/examples/node/domstubs.js +95 -39
- package/lib/pdf.js +49 -31
- package/lib/pdf.worker.js +7 -5
- package/lib/shared/compatibility.js +3 -145
- package/lib/shared/is_node.js +8 -7
- package/lib/shared/message_handler.js +367 -314
- package/lib/shared/util.js +421 -415
- package/lib/test/unit/annotation_spec.js +1570 -690
- package/lib/test/unit/api_spec.js +855 -493
- package/lib/test/unit/bidi_spec.js +12 -12
- package/lib/test/unit/cff_parser_spec.js +88 -61
- package/lib/test/unit/clitests_helper.js +9 -12
- package/lib/test/unit/cmap_spec.js +140 -88
- package/lib/test/unit/colorspace_spec.js +204 -152
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +194 -182
- package/lib/test/unit/custom_spec.js +50 -64
- package/lib/test/unit/display_svg_spec.js +53 -38
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +17 -22
- package/lib/test/unit/encodings_spec.js +15 -57
- package/lib/test/unit/evaluator_spec.js +90 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +219 -205
- package/lib/test/unit/jasmine-boot.js +68 -39
- package/lib/test/unit/message_handler_spec.js +187 -160
- package/lib/test/unit/metadata_spec.js +87 -34
- package/lib/test/unit/murmurhash3_spec.js +13 -13
- package/lib/test/unit/network_spec.js +26 -59
- package/lib/test/unit/network_utils_spec.js +187 -121
- package/lib/test/unit/node_stream_spec.js +98 -90
- package/lib/test/unit/parser_spec.js +173 -131
- package/lib/test/unit/pdf_find_controller_spec.js +148 -67
- package/lib/test/unit/pdf_find_utils_spec.js +35 -34
- package/lib/test/unit/pdf_history_spec.js +45 -33
- package/lib/test/unit/primitives_spec.js +161 -126
- package/lib/test/unit/stream_spec.js +22 -15
- package/lib/test/unit/test_utils.js +149 -98
- package/lib/test/unit/testreporter.js +36 -18
- package/lib/test/unit/type1_parser_spec.js +46 -44
- package/lib/test/unit/ui_utils_spec.js +388 -372
- package/lib/test/unit/unicode_spec.js +49 -46
- package/lib/test/unit/util_spec.js +144 -248
- package/lib/web/annotation_layer_builder.js +75 -95
- package/lib/web/app.js +1538 -1147
- package/lib/web/app_options.js +116 -104
- package/lib/web/base_viewer.js +950 -775
- package/lib/web/chromecom.js +217 -225
- package/lib/web/debugger.js +236 -148
- package/lib/web/download_manager.js +50 -50
- package/lib/web/firefox_print_service.js +51 -33
- package/lib/web/firefoxcom.js +225 -352
- package/lib/web/genericcom.js +30 -93
- package/lib/web/genericl10n.js +26 -143
- package/lib/web/grab_to_pan.js +57 -33
- package/lib/web/interfaces.js +105 -232
- package/lib/web/overlay_manager.js +73 -227
- package/lib/web/password_prompt.js +44 -62
- package/lib/web/pdf_attachment_viewer.js +118 -123
- package/lib/web/pdf_cursor_tools.js +89 -93
- package/lib/web/pdf_document_properties.js +242 -281
- package/lib/web/pdf_find_bar.js +157 -163
- package/lib/web/pdf_find_controller.js +598 -454
- package/lib/web/pdf_find_utils.js +32 -16
- package/lib/web/pdf_history.js +481 -355
- package/lib/web/pdf_link_service.js +355 -323
- package/lib/web/pdf_outline_viewer.js +167 -152
- package/lib/web/pdf_page_view.js +511 -457
- package/lib/web/pdf_presentation_mode.js +347 -335
- package/lib/web/pdf_print_service.js +133 -103
- package/lib/web/pdf_rendering_queue.js +98 -100
- package/lib/web/pdf_sidebar.js +323 -299
- package/lib/web/pdf_sidebar_resizer.js +107 -108
- package/lib/web/pdf_single_page_viewer.js +94 -146
- package/lib/web/pdf_thumbnail_view.js +319 -269
- package/lib/web/pdf_thumbnail_viewer.js +219 -199
- package/lib/web/pdf_viewer.component.js +111 -32
- package/lib/web/pdf_viewer.js +61 -101
- package/lib/web/preferences.js +87 -272
- package/lib/web/secondary_toolbar.js +207 -220
- package/lib/web/text_layer_builder.js +322 -322
- package/lib/web/toolbar.js +227 -180
- package/lib/web/ui_utils.js +476 -421
- package/lib/web/view_history.js +59 -208
- package/lib/web/viewer_compatibility.js +9 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +36 -22
- package/web/pdf_viewer.js +4407 -4516
- 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 -441
- package/lib/shared/streams_polyfill.js +0 -39
- package/lib/shared/url_polyfill.js +0 -50
- package/lib/test/unit/dom_utils_spec.js +0 -89
- package/lib/web/dom_events.js +0 -140
package/lib/web/base_viewer.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,101 +19,95 @@
|
|
19
19
|
* @licend The above is the entire license notice for the
|
20
20
|
* Javascript code in this page
|
21
21
|
*/
|
22
|
-
|
22
|
+
"use strict";
|
23
23
|
|
24
24
|
Object.defineProperty(exports, "__esModule", {
|
25
25
|
value: true
|
26
26
|
});
|
27
|
-
exports.
|
27
|
+
exports.BaseViewer = void 0;
|
28
28
|
|
29
|
-
var
|
29
|
+
var _ui_utils = require("./ui_utils.js");
|
30
30
|
|
31
|
-
var
|
31
|
+
var _pdf_rendering_queue = require("./pdf_rendering_queue.js");
|
32
32
|
|
33
|
-
var
|
33
|
+
var _annotation_layer_builder = require("./annotation_layer_builder.js");
|
34
34
|
|
35
|
-
var
|
35
|
+
var _pdf = require("../pdf");
|
36
36
|
|
37
|
-
var
|
37
|
+
var _pdf_page_view = require("./pdf_page_view.js");
|
38
38
|
|
39
|
-
var
|
39
|
+
var _pdf_link_service = require("./pdf_link_service.js");
|
40
40
|
|
41
|
-
var
|
41
|
+
var _text_layer_builder = require("./text_layer_builder.js");
|
42
42
|
|
43
|
-
|
43
|
+
const DEFAULT_CACHE_SIZE = 10;
|
44
44
|
|
45
|
-
var _text_layer_builder = require('./text_layer_builder');
|
46
|
-
|
47
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
48
|
-
|
49
|
-
var DEFAULT_CACHE_SIZE = 10;
|
50
|
-
var ScrollMode = {
|
51
|
-
VERTICAL: 0,
|
52
|
-
HORIZONTAL: 1,
|
53
|
-
WRAPPED: 2
|
54
|
-
};
|
55
|
-
var SpreadMode = {
|
56
|
-
NONE: 0,
|
57
|
-
ODD: 1,
|
58
|
-
EVEN: 2
|
59
|
-
};
|
60
45
|
function PDFPageViewBuffer(size) {
|
61
|
-
|
46
|
+
const data = [];
|
47
|
+
|
62
48
|
this.push = function (view) {
|
63
|
-
|
49
|
+
const i = data.indexOf(view);
|
50
|
+
|
64
51
|
if (i >= 0) {
|
65
52
|
data.splice(i, 1);
|
66
53
|
}
|
54
|
+
|
67
55
|
data.push(view);
|
56
|
+
|
68
57
|
if (data.length > size) {
|
69
58
|
data.shift().destroy();
|
70
59
|
}
|
71
60
|
};
|
61
|
+
|
72
62
|
this.resize = function (newSize, pagesToKeep) {
|
73
63
|
size = newSize;
|
64
|
+
|
74
65
|
if (pagesToKeep) {
|
75
|
-
|
76
|
-
|
66
|
+
const pageIdsToKeep = new Set();
|
67
|
+
|
68
|
+
for (let i = 0, iMax = pagesToKeep.length; i < iMax; ++i) {
|
77
69
|
pageIdsToKeep.add(pagesToKeep[i].id);
|
78
70
|
}
|
71
|
+
|
79
72
|
(0, _ui_utils.moveToEndOfArray)(data, function (page) {
|
80
73
|
return pageIdsToKeep.has(page.id);
|
81
74
|
});
|
82
75
|
}
|
76
|
+
|
83
77
|
while (data.length > size) {
|
84
78
|
data.shift().destroy();
|
85
79
|
}
|
86
80
|
};
|
87
81
|
}
|
82
|
+
|
88
83
|
function isSameScale(oldScale, newScale) {
|
89
84
|
if (newScale === oldScale) {
|
90
85
|
return true;
|
91
86
|
}
|
87
|
+
|
92
88
|
if (Math.abs(newScale - oldScale) < 1e-15) {
|
93
89
|
return true;
|
94
90
|
}
|
91
|
+
|
95
92
|
return false;
|
96
93
|
}
|
97
94
|
|
98
|
-
|
99
|
-
|
100
|
-
var _this = this;
|
101
|
-
|
102
|
-
_classCallCheck(this, BaseViewer);
|
103
|
-
|
95
|
+
class BaseViewer {
|
96
|
+
constructor(options) {
|
104
97
|
if (this.constructor === BaseViewer) {
|
105
|
-
throw new Error(
|
98
|
+
throw new Error("Cannot initialize BaseViewer.");
|
106
99
|
}
|
100
|
+
|
107
101
|
this._name = this.constructor.name;
|
108
102
|
this.container = options.container;
|
109
103
|
this.viewer = options.viewer || options.container.firstElementChild;
|
110
|
-
this.eventBus = options.eventBus || (0,
|
104
|
+
this.eventBus = options.eventBus || (0, _ui_utils.getGlobalEventBus)();
|
111
105
|
this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService();
|
112
106
|
this.downloadManager = options.downloadManager || null;
|
113
107
|
this.findController = options.findController || null;
|
114
108
|
this.removePageBorders = options.removePageBorders || false;
|
115
109
|
this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE;
|
116
|
-
this.imageResourcesPath = options.imageResourcesPath ||
|
110
|
+
this.imageResourcesPath = options.imageResourcesPath || "";
|
117
111
|
this.renderInteractiveForms = options.renderInteractiveForms || false;
|
118
112
|
this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;
|
119
113
|
this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
|
@@ -122,831 +116,1012 @@ var BaseViewer = function () {
|
|
122
116
|
this.maxCanvasPixels = options.maxCanvasPixels;
|
123
117
|
this.l10n = options.l10n || _ui_utils.NullL10n;
|
124
118
|
this.defaultRenderingQueue = !options.renderingQueue;
|
119
|
+
|
125
120
|
if (this.defaultRenderingQueue) {
|
126
121
|
this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
|
127
122
|
this.renderingQueue.setViewer(this);
|
128
123
|
} else {
|
129
124
|
this.renderingQueue = options.renderingQueue;
|
130
125
|
}
|
126
|
+
|
131
127
|
this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this));
|
132
128
|
this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN;
|
129
|
+
this._onBeforeDraw = this._onAfterDraw = null;
|
130
|
+
|
133
131
|
this._resetView();
|
132
|
+
|
134
133
|
if (this.removePageBorders) {
|
135
|
-
this.viewer.classList.add(
|
134
|
+
this.viewer.classList.add("removePageBorders");
|
136
135
|
}
|
137
|
-
|
138
|
-
|
136
|
+
|
137
|
+
Promise.resolve().then(() => {
|
138
|
+
this.eventBus.dispatch("baseviewerinit", {
|
139
|
+
source: this
|
140
|
+
});
|
139
141
|
});
|
140
142
|
}
|
141
143
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
144
|
+
get pagesCount() {
|
145
|
+
return this._pages.length;
|
146
|
+
}
|
147
|
+
|
148
|
+
getPageView(index) {
|
149
|
+
return this._pages[index];
|
150
|
+
}
|
151
|
+
|
152
|
+
get pageViewsReady() {
|
153
|
+
if (!this._pagesCapability.settled) {
|
154
|
+
return false;
|
146
155
|
}
|
147
|
-
}, {
|
148
|
-
key: '_setCurrentPageNumber',
|
149
|
-
value: function _setCurrentPageNumber(val) {
|
150
|
-
var resetCurrentPageView = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
151
156
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
157
|
+
return this._pages.every(function (pageView) {
|
158
|
+
return pageView && pageView.pdfPage;
|
159
|
+
});
|
160
|
+
}
|
161
|
+
|
162
|
+
get currentPageNumber() {
|
163
|
+
return this._currentPageNumber;
|
164
|
+
}
|
165
|
+
|
166
|
+
set currentPageNumber(val) {
|
167
|
+
if (!Number.isInteger(val)) {
|
168
|
+
throw new Error("Invalid page number.");
|
169
|
+
}
|
170
|
+
|
171
|
+
if (!this.pdfDocument) {
|
172
|
+
return;
|
173
|
+
}
|
174
|
+
|
175
|
+
if (!this._setCurrentPageNumber(val, true)) {
|
176
|
+
console.error(`${this._name}.currentPageNumber: "${val}" is not a valid page.`);
|
177
|
+
}
|
178
|
+
}
|
179
|
+
|
180
|
+
_setCurrentPageNumber(val, resetCurrentPageView = false) {
|
181
|
+
if (this._currentPageNumber === val) {
|
170
182
|
if (resetCurrentPageView) {
|
171
183
|
this._resetCurrentPageView();
|
172
184
|
}
|
185
|
+
|
186
|
+
return true;
|
173
187
|
}
|
174
|
-
}, {
|
175
|
-
key: 'setDocument',
|
176
|
-
value: function setDocument(pdfDocument) {
|
177
|
-
var _this2 = this;
|
178
188
|
|
179
|
-
|
180
|
-
|
181
|
-
this._resetView();
|
182
|
-
if (this.findController) {
|
183
|
-
this.findController.setDocument(null);
|
184
|
-
}
|
185
|
-
}
|
186
|
-
this.pdfDocument = pdfDocument;
|
187
|
-
if (!pdfDocument) {
|
188
|
-
return;
|
189
|
-
}
|
190
|
-
var pagesCount = pdfDocument.numPages;
|
191
|
-
var pagesCapability = (0, _pdf.createPromiseCapability)();
|
192
|
-
this.pagesPromise = pagesCapability.promise;
|
193
|
-
pagesCapability.promise.then(function () {
|
194
|
-
_this2._pageViewsReady = true;
|
195
|
-
_this2.eventBus.dispatch('pagesloaded', {
|
196
|
-
source: _this2,
|
197
|
-
pagesCount: pagesCount
|
198
|
-
});
|
199
|
-
});
|
200
|
-
var isOnePageRenderedResolved = false;
|
201
|
-
var onePageRenderedCapability = (0, _pdf.createPromiseCapability)();
|
202
|
-
this.onePageRendered = onePageRenderedCapability.promise;
|
203
|
-
var bindOnAfterAndBeforeDraw = function bindOnAfterAndBeforeDraw(pageView) {
|
204
|
-
pageView.onBeforeDraw = function () {
|
205
|
-
_this2._buffer.push(pageView);
|
206
|
-
};
|
207
|
-
pageView.onAfterDraw = function () {
|
208
|
-
if (!isOnePageRenderedResolved) {
|
209
|
-
isOnePageRenderedResolved = true;
|
210
|
-
onePageRenderedCapability.resolve();
|
211
|
-
}
|
212
|
-
};
|
213
|
-
};
|
214
|
-
var firstPagePromise = pdfDocument.getPage(1);
|
215
|
-
this.firstPagePromise = firstPagePromise;
|
216
|
-
firstPagePromise.then(function (pdfPage) {
|
217
|
-
var scale = _this2.currentScale;
|
218
|
-
var viewport = pdfPage.getViewport(scale * _ui_utils.CSS_UNITS);
|
219
|
-
for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
|
220
|
-
var textLayerFactory = null;
|
221
|
-
if (_this2.textLayerMode !== _ui_utils.TextLayerMode.DISABLE) {
|
222
|
-
textLayerFactory = _this2;
|
223
|
-
}
|
224
|
-
var pageView = new _pdf_page_view.PDFPageView({
|
225
|
-
container: _this2._setDocumentViewerElement,
|
226
|
-
eventBus: _this2.eventBus,
|
227
|
-
id: pageNum,
|
228
|
-
scale: scale,
|
229
|
-
defaultViewport: viewport.clone(),
|
230
|
-
renderingQueue: _this2.renderingQueue,
|
231
|
-
textLayerFactory: textLayerFactory,
|
232
|
-
textLayerMode: _this2.textLayerMode,
|
233
|
-
annotationLayerFactory: _this2,
|
234
|
-
imageResourcesPath: _this2.imageResourcesPath,
|
235
|
-
renderInteractiveForms: _this2.renderInteractiveForms,
|
236
|
-
renderer: _this2.renderer,
|
237
|
-
enableWebGL: _this2.enableWebGL,
|
238
|
-
useOnlyCssZoom: _this2.useOnlyCssZoom,
|
239
|
-
maxCanvasPixels: _this2.maxCanvasPixels,
|
240
|
-
l10n: _this2.l10n
|
241
|
-
});
|
242
|
-
bindOnAfterAndBeforeDraw(pageView);
|
243
|
-
_this2._pages.push(pageView);
|
244
|
-
}
|
245
|
-
if (_this2._spreadMode !== SpreadMode.NONE) {
|
246
|
-
_this2._updateSpreadMode();
|
247
|
-
}
|
248
|
-
onePageRenderedCapability.promise.then(function () {
|
249
|
-
if (pdfDocument.loadingParams['disableAutoFetch']) {
|
250
|
-
pagesCapability.resolve();
|
251
|
-
return;
|
252
|
-
}
|
253
|
-
var getPagesLeft = pagesCount;
|
254
|
-
|
255
|
-
var _loop = function _loop(_pageNum) {
|
256
|
-
pdfDocument.getPage(_pageNum).then(function (pdfPage) {
|
257
|
-
var pageView = _this2._pages[_pageNum - 1];
|
258
|
-
if (!pageView.pdfPage) {
|
259
|
-
pageView.setPdfPage(pdfPage);
|
260
|
-
}
|
261
|
-
_this2.linkService.cachePageRef(_pageNum, pdfPage.ref);
|
262
|
-
if (--getPagesLeft === 0) {
|
263
|
-
pagesCapability.resolve();
|
264
|
-
}
|
265
|
-
}, function (reason) {
|
266
|
-
console.error('Unable to get page ' + _pageNum + ' to initialize viewer', reason);
|
267
|
-
if (--getPagesLeft === 0) {
|
268
|
-
pagesCapability.resolve();
|
269
|
-
}
|
270
|
-
});
|
271
|
-
};
|
272
|
-
|
273
|
-
for (var _pageNum = 1; _pageNum <= pagesCount; ++_pageNum) {
|
274
|
-
_loop(_pageNum);
|
275
|
-
}
|
276
|
-
});
|
277
|
-
_this2.eventBus.dispatch('pagesinit', { source: _this2 });
|
278
|
-
if (_this2.findController) {
|
279
|
-
_this2.findController.setDocument(pdfDocument);
|
280
|
-
}
|
281
|
-
if (_this2.defaultRenderingQueue) {
|
282
|
-
_this2.update();
|
283
|
-
}
|
284
|
-
}).catch(function (reason) {
|
285
|
-
console.error('Unable to initialize viewer', reason);
|
286
|
-
});
|
189
|
+
if (!(0 < val && val <= this.pagesCount)) {
|
190
|
+
return false;
|
287
191
|
}
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
console.error(this._name + '.setPageLabels: Invalid page labels.');
|
299
|
-
} else {
|
300
|
-
this._pageLabels = labels;
|
301
|
-
}
|
302
|
-
for (var i = 0, ii = this._pages.length; i < ii; i++) {
|
303
|
-
var pageView = this._pages[i];
|
304
|
-
var label = this._pageLabels && this._pageLabels[i];
|
305
|
-
pageView.setPageLabel(label);
|
306
|
-
}
|
192
|
+
|
193
|
+
this._currentPageNumber = val;
|
194
|
+
this.eventBus.dispatch("pagechanging", {
|
195
|
+
source: this,
|
196
|
+
pageNumber: val,
|
197
|
+
pageLabel: this._pageLabels && this._pageLabels[val - 1]
|
198
|
+
});
|
199
|
+
|
200
|
+
if (resetCurrentPageView) {
|
201
|
+
this._resetCurrentPageView();
|
307
202
|
}
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
this.
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
value: function _scrollUpdate() {
|
329
|
-
if (this.pagesCount === 0) {
|
330
|
-
return;
|
203
|
+
|
204
|
+
return true;
|
205
|
+
}
|
206
|
+
|
207
|
+
get currentPageLabel() {
|
208
|
+
return this._pageLabels && this._pageLabels[this._currentPageNumber - 1];
|
209
|
+
}
|
210
|
+
|
211
|
+
set currentPageLabel(val) {
|
212
|
+
if (!this.pdfDocument) {
|
213
|
+
return;
|
214
|
+
}
|
215
|
+
|
216
|
+
let page = val | 0;
|
217
|
+
|
218
|
+
if (this._pageLabels) {
|
219
|
+
const i = this._pageLabels.indexOf(val);
|
220
|
+
|
221
|
+
if (i >= 0) {
|
222
|
+
page = i + 1;
|
331
223
|
}
|
224
|
+
}
|
225
|
+
|
226
|
+
if (!this._setCurrentPageNumber(page, true)) {
|
227
|
+
console.error(`${this._name}.currentPageLabel: "${val}" is not a valid page.`);
|
228
|
+
}
|
229
|
+
}
|
230
|
+
|
231
|
+
get currentScale() {
|
232
|
+
return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE;
|
233
|
+
}
|
234
|
+
|
235
|
+
set currentScale(val) {
|
236
|
+
if (isNaN(val)) {
|
237
|
+
throw new Error("Invalid numeric scale.");
|
238
|
+
}
|
239
|
+
|
240
|
+
if (!this.pdfDocument) {
|
241
|
+
return;
|
242
|
+
}
|
243
|
+
|
244
|
+
this._setScale(val, false);
|
245
|
+
}
|
246
|
+
|
247
|
+
get currentScaleValue() {
|
248
|
+
return this._currentScaleValue;
|
249
|
+
}
|
250
|
+
|
251
|
+
set currentScaleValue(val) {
|
252
|
+
if (!this.pdfDocument) {
|
253
|
+
return;
|
254
|
+
}
|
255
|
+
|
256
|
+
this._setScale(val, false);
|
257
|
+
}
|
258
|
+
|
259
|
+
get pagesRotation() {
|
260
|
+
return this._pagesRotation;
|
261
|
+
}
|
262
|
+
|
263
|
+
set pagesRotation(rotation) {
|
264
|
+
if (!(0, _ui_utils.isValidRotation)(rotation)) {
|
265
|
+
throw new Error("Invalid pages rotation angle.");
|
266
|
+
}
|
267
|
+
|
268
|
+
if (!this.pdfDocument) {
|
269
|
+
return;
|
270
|
+
}
|
271
|
+
|
272
|
+
if (this._pagesRotation === rotation) {
|
273
|
+
return;
|
274
|
+
}
|
275
|
+
|
276
|
+
this._pagesRotation = rotation;
|
277
|
+
const pageNumber = this._currentPageNumber;
|
278
|
+
|
279
|
+
for (let i = 0, ii = this._pages.length; i < ii; i++) {
|
280
|
+
const pageView = this._pages[i];
|
281
|
+
pageView.update(pageView.scale, rotation);
|
282
|
+
}
|
283
|
+
|
284
|
+
if (this._currentScaleValue) {
|
285
|
+
this._setScale(this._currentScaleValue, true);
|
286
|
+
}
|
287
|
+
|
288
|
+
this.eventBus.dispatch("rotationchanging", {
|
289
|
+
source: this,
|
290
|
+
pagesRotation: rotation,
|
291
|
+
pageNumber
|
292
|
+
});
|
293
|
+
|
294
|
+
if (this.defaultRenderingQueue) {
|
332
295
|
this.update();
|
333
296
|
}
|
334
|
-
}
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
297
|
+
}
|
298
|
+
|
299
|
+
get firstPagePromise() {
|
300
|
+
return this.pdfDocument ? this._firstPageCapability.promise : null;
|
301
|
+
}
|
302
|
+
|
303
|
+
get onePageRendered() {
|
304
|
+
return this.pdfDocument ? this._onePageRenderedCapability.promise : null;
|
305
|
+
}
|
306
|
+
|
307
|
+
get pagesPromise() {
|
308
|
+
return this.pdfDocument ? this._pagesCapability.promise : null;
|
309
|
+
}
|
310
|
+
|
311
|
+
get _setDocumentViewerElement() {
|
312
|
+
throw new Error("Not implemented: _setDocumentViewerElement");
|
313
|
+
}
|
314
|
+
|
315
|
+
setDocument(pdfDocument) {
|
316
|
+
if (this.pdfDocument) {
|
317
|
+
this._cancelRendering();
|
318
|
+
|
319
|
+
this._resetView();
|
320
|
+
|
321
|
+
if (this.findController) {
|
322
|
+
this.findController.setDocument(null);
|
323
|
+
}
|
324
|
+
}
|
342
325
|
|
343
|
-
|
326
|
+
this.pdfDocument = pdfDocument;
|
327
|
+
|
328
|
+
if (!pdfDocument) {
|
329
|
+
return;
|
344
330
|
}
|
345
|
-
}, {
|
346
|
-
key: '_setScaleDispatchEvent',
|
347
|
-
value: function _setScaleDispatchEvent(newScale, newValue) {
|
348
|
-
var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
349
331
|
|
350
|
-
|
332
|
+
const pagesCount = pdfDocument.numPages;
|
333
|
+
const firstPagePromise = pdfDocument.getPage(1);
|
334
|
+
|
335
|
+
this._pagesCapability.promise.then(() => {
|
336
|
+
this.eventBus.dispatch("pagesloaded", {
|
351
337
|
source: this,
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
value: function _setScaleUpdatePages(newScale, newValue) {
|
361
|
-
var noScroll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
362
|
-
var preset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
363
|
-
|
364
|
-
this._currentScaleValue = newValue.toString();
|
365
|
-
if (isSameScale(this._currentScale, newScale)) {
|
366
|
-
if (preset) {
|
367
|
-
this._setScaleDispatchEvent(newScale, newValue, true);
|
368
|
-
}
|
338
|
+
pagesCount
|
339
|
+
});
|
340
|
+
});
|
341
|
+
|
342
|
+
this._onBeforeDraw = evt => {
|
343
|
+
const pageView = this._pages[evt.pageNumber - 1];
|
344
|
+
|
345
|
+
if (!pageView) {
|
369
346
|
return;
|
370
347
|
}
|
371
|
-
|
372
|
-
|
348
|
+
|
349
|
+
this._buffer.push(pageView);
|
350
|
+
};
|
351
|
+
|
352
|
+
this.eventBus._on("pagerender", this._onBeforeDraw);
|
353
|
+
|
354
|
+
this._onAfterDraw = evt => {
|
355
|
+
if (evt.cssTransform || this._onePageRenderedCapability.settled) {
|
356
|
+
return;
|
373
357
|
}
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
358
|
+
|
359
|
+
this._onePageRenderedCapability.resolve();
|
360
|
+
|
361
|
+
this.eventBus._off("pagerendered", this._onAfterDraw);
|
362
|
+
|
363
|
+
this._onAfterDraw = null;
|
364
|
+
};
|
365
|
+
|
366
|
+
this.eventBus._on("pagerendered", this._onAfterDraw);
|
367
|
+
|
368
|
+
firstPagePromise.then(firstPdfPage => {
|
369
|
+
this._firstPageCapability.resolve(firstPdfPage);
|
370
|
+
|
371
|
+
const scale = this.currentScale;
|
372
|
+
const viewport = firstPdfPage.getViewport({
|
373
|
+
scale: scale * _ui_utils.CSS_UNITS
|
374
|
+
});
|
375
|
+
const textLayerFactory = this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE ? this : null;
|
376
|
+
|
377
|
+
for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {
|
378
|
+
const pageView = new _pdf_page_view.PDFPageView({
|
379
|
+
container: this._setDocumentViewerElement,
|
380
|
+
eventBus: this.eventBus,
|
381
|
+
id: pageNum,
|
382
|
+
scale,
|
383
|
+
defaultViewport: viewport.clone(),
|
384
|
+
renderingQueue: this.renderingQueue,
|
385
|
+
textLayerFactory,
|
386
|
+
textLayerMode: this.textLayerMode,
|
387
|
+
annotationLayerFactory: this,
|
388
|
+
imageResourcesPath: this.imageResourcesPath,
|
389
|
+
renderInteractiveForms: this.renderInteractiveForms,
|
390
|
+
renderer: this.renderer,
|
391
|
+
enableWebGL: this.enableWebGL,
|
392
|
+
useOnlyCssZoom: this.useOnlyCssZoom,
|
393
|
+
maxCanvasPixels: this.maxCanvasPixels,
|
394
|
+
l10n: this.l10n
|
386
395
|
});
|
396
|
+
|
397
|
+
this._pages.push(pageView);
|
387
398
|
}
|
388
|
-
|
389
|
-
|
390
|
-
|
399
|
+
|
400
|
+
const firstPageView = this._pages[0];
|
401
|
+
|
402
|
+
if (firstPageView) {
|
403
|
+
firstPageView.setPdfPage(firstPdfPage);
|
404
|
+
this.linkService.cachePageRef(1, firstPdfPage.ref);
|
391
405
|
}
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
406
|
+
|
407
|
+
if (this._spreadMode !== _ui_utils.SpreadMode.NONE) {
|
408
|
+
this._updateSpreadMode();
|
409
|
+
}
|
410
|
+
|
411
|
+
this._onePageRenderedCapability.promise.then(() => {
|
412
|
+
if (this.findController) {
|
413
|
+
this.findController.setDocument(pdfDocument);
|
414
|
+
}
|
415
|
+
|
416
|
+
if (pdfDocument.loadingParams["disableAutoFetch"] || pagesCount > 7500) {
|
417
|
+
this._pagesCapability.resolve();
|
418
|
+
|
404
419
|
return;
|
405
420
|
}
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
if (
|
410
|
-
|
411
|
-
|
412
|
-
|
421
|
+
|
422
|
+
let getPagesLeft = pagesCount - 1;
|
423
|
+
|
424
|
+
if (getPagesLeft <= 0) {
|
425
|
+
this._pagesCapability.resolve();
|
426
|
+
|
427
|
+
return;
|
413
428
|
}
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
return;
|
429
|
+
|
430
|
+
for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) {
|
431
|
+
pdfDocument.getPage(pageNum).then(pdfPage => {
|
432
|
+
const pageView = this._pages[pageNum - 1];
|
433
|
+
|
434
|
+
if (!pageView.pdfPage) {
|
435
|
+
pageView.setPdfPage(pdfPage);
|
436
|
+
}
|
437
|
+
|
438
|
+
this.linkService.cachePageRef(pageNum, pdfPage.ref);
|
439
|
+
|
440
|
+
if (--getPagesLeft === 0) {
|
441
|
+
this._pagesCapability.resolve();
|
442
|
+
}
|
443
|
+
}, reason => {
|
444
|
+
console.error(`Unable to get page ${pageNum} to initialize viewer`, reason);
|
445
|
+
|
446
|
+
if (--getPagesLeft === 0) {
|
447
|
+
this._pagesCapability.resolve();
|
448
|
+
}
|
449
|
+
});
|
436
450
|
}
|
437
|
-
|
451
|
+
});
|
452
|
+
|
453
|
+
this.eventBus.dispatch("pagesinit", {
|
454
|
+
source: this
|
455
|
+
});
|
456
|
+
|
457
|
+
if (this.defaultRenderingQueue) {
|
458
|
+
this.update();
|
438
459
|
}
|
460
|
+
}).catch(reason => {
|
461
|
+
console.error("Unable to initialize viewer", reason);
|
462
|
+
});
|
463
|
+
}
|
464
|
+
|
465
|
+
setPageLabels(labels) {
|
466
|
+
if (!this.pdfDocument) {
|
467
|
+
return;
|
468
|
+
}
|
469
|
+
|
470
|
+
if (!labels) {
|
471
|
+
this._pageLabels = null;
|
472
|
+
} else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {
|
473
|
+
this._pageLabels = null;
|
474
|
+
console.error(`${this._name}.setPageLabels: Invalid page labels.`);
|
475
|
+
} else {
|
476
|
+
this._pageLabels = labels;
|
477
|
+
}
|
478
|
+
|
479
|
+
for (let i = 0, ii = this._pages.length; i < ii; i++) {
|
480
|
+
const pageView = this._pages[i];
|
481
|
+
const label = this._pageLabels && this._pageLabels[i];
|
482
|
+
pageView.setPageLabel(label);
|
483
|
+
}
|
484
|
+
}
|
485
|
+
|
486
|
+
_resetView() {
|
487
|
+
this._pages = [];
|
488
|
+
this._currentPageNumber = 1;
|
489
|
+
this._currentScale = _ui_utils.UNKNOWN_SCALE;
|
490
|
+
this._currentScaleValue = null;
|
491
|
+
this._pageLabels = null;
|
492
|
+
this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);
|
493
|
+
this._location = null;
|
494
|
+
this._pagesRotation = 0;
|
495
|
+
this._pagesRequests = new WeakMap();
|
496
|
+
this._firstPageCapability = (0, _pdf.createPromiseCapability)();
|
497
|
+
this._onePageRenderedCapability = (0, _pdf.createPromiseCapability)();
|
498
|
+
this._pagesCapability = (0, _pdf.createPromiseCapability)();
|
499
|
+
this._scrollMode = _ui_utils.ScrollMode.VERTICAL;
|
500
|
+
this._spreadMode = _ui_utils.SpreadMode.NONE;
|
501
|
+
|
502
|
+
if (this._onBeforeDraw) {
|
503
|
+
this.eventBus._off("pagerender", this._onBeforeDraw);
|
504
|
+
|
505
|
+
this._onBeforeDraw = null;
|
506
|
+
}
|
507
|
+
|
508
|
+
if (this._onAfterDraw) {
|
509
|
+
this.eventBus._off("pagerendered", this._onAfterDraw);
|
510
|
+
|
511
|
+
this._onAfterDraw = null;
|
512
|
+
}
|
513
|
+
|
514
|
+
this.viewer.textContent = "";
|
515
|
+
|
516
|
+
this._updateScrollMode();
|
517
|
+
}
|
518
|
+
|
519
|
+
_scrollUpdate() {
|
520
|
+
if (this.pagesCount === 0) {
|
521
|
+
return;
|
439
522
|
}
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
523
|
+
|
524
|
+
this.update();
|
525
|
+
}
|
526
|
+
|
527
|
+
_scrollIntoView({
|
528
|
+
pageDiv,
|
529
|
+
pageSpot = null,
|
530
|
+
pageNumber = null
|
531
|
+
}) {
|
532
|
+
(0, _ui_utils.scrollIntoView)(pageDiv, pageSpot);
|
533
|
+
}
|
534
|
+
|
535
|
+
_setScaleUpdatePages(newScale, newValue, noScroll = false, preset = false) {
|
536
|
+
this._currentScaleValue = newValue.toString();
|
537
|
+
|
538
|
+
if (isSameScale(this._currentScale, newScale)) {
|
539
|
+
if (preset) {
|
540
|
+
this.eventBus.dispatch("scalechanging", {
|
541
|
+
source: this,
|
542
|
+
scale: newScale,
|
543
|
+
presetValue: newValue
|
544
|
+
});
|
445
545
|
}
|
446
|
-
|
447
|
-
|
546
|
+
|
547
|
+
return;
|
448
548
|
}
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
549
|
+
|
550
|
+
for (let i = 0, ii = this._pages.length; i < ii; i++) {
|
551
|
+
this._pages[i].update(newScale);
|
552
|
+
}
|
553
|
+
|
554
|
+
this._currentScale = newScale;
|
555
|
+
|
556
|
+
if (!noScroll) {
|
557
|
+
let page = this._currentPageNumber,
|
558
|
+
dest;
|
559
|
+
|
560
|
+
if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) {
|
561
|
+
page = this._location.pageNumber;
|
562
|
+
dest = [null, {
|
563
|
+
name: "XYZ"
|
564
|
+
}, this._location.left, this._location.top, null];
|
454
565
|
}
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
566
|
+
|
567
|
+
this.scrollPageIntoView({
|
568
|
+
pageNumber: page,
|
569
|
+
destArray: dest,
|
570
|
+
allowNegativeOffset: true
|
571
|
+
});
|
572
|
+
}
|
573
|
+
|
574
|
+
this.eventBus.dispatch("scalechanging", {
|
575
|
+
source: this,
|
576
|
+
scale: newScale,
|
577
|
+
presetValue: preset ? newValue : undefined
|
578
|
+
});
|
579
|
+
|
580
|
+
if (this.defaultRenderingQueue) {
|
581
|
+
this.update();
|
582
|
+
}
|
583
|
+
}
|
584
|
+
|
585
|
+
_setScale(value, noScroll = false) {
|
586
|
+
let scale = parseFloat(value);
|
587
|
+
|
588
|
+
if (scale > 0) {
|
589
|
+
this._setScaleUpdatePages(scale, value, noScroll, false);
|
590
|
+
} else {
|
591
|
+
const currentPage = this._pages[this._currentPageNumber - 1];
|
592
|
+
|
593
|
+
if (!currentPage) {
|
460
594
|
return;
|
461
595
|
}
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
596
|
+
|
597
|
+
const noPadding = this.isInPresentationMode || this.removePageBorders;
|
598
|
+
let hPadding = noPadding ? 0 : _ui_utils.SCROLLBAR_PADDING;
|
599
|
+
let vPadding = noPadding ? 0 : _ui_utils.VERTICAL_PADDING;
|
600
|
+
|
601
|
+
if (!noPadding && this._isScrollModeHorizontal) {
|
602
|
+
[hPadding, vPadding] = [vPadding, hPadding];
|
466
603
|
}
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
var pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS;
|
475
|
-
var pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS;
|
476
|
-
var scale = 0;
|
477
|
-
switch (dest[1].name) {
|
478
|
-
case 'XYZ':
|
479
|
-
x = dest[2];
|
480
|
-
y = dest[3];
|
481
|
-
scale = dest[4];
|
482
|
-
x = x !== null ? x : 0;
|
483
|
-
y = y !== null ? y : pageHeight;
|
604
|
+
|
605
|
+
const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale;
|
606
|
+
const pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale;
|
607
|
+
|
608
|
+
switch (value) {
|
609
|
+
case "page-actual":
|
610
|
+
scale = 1;
|
484
611
|
break;
|
485
|
-
|
486
|
-
case
|
487
|
-
scale =
|
612
|
+
|
613
|
+
case "page-width":
|
614
|
+
scale = pageWidthScale;
|
488
615
|
break;
|
489
|
-
|
490
|
-
case
|
491
|
-
|
492
|
-
scale = 'page-width';
|
493
|
-
if (y === null && this._location) {
|
494
|
-
x = this._location.left;
|
495
|
-
y = this._location.top;
|
496
|
-
}
|
616
|
+
|
617
|
+
case "page-height":
|
618
|
+
scale = pageHeightScale;
|
497
619
|
break;
|
498
|
-
|
499
|
-
case
|
500
|
-
|
501
|
-
width = pageWidth;
|
502
|
-
height = pageHeight;
|
503
|
-
scale = 'page-height';
|
620
|
+
|
621
|
+
case "page-fit":
|
622
|
+
scale = Math.min(pageWidthScale, pageHeightScale);
|
504
623
|
break;
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
height = dest[5] - y;
|
510
|
-
var hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING;
|
511
|
-
var vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING;
|
512
|
-
widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS;
|
513
|
-
heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS;
|
514
|
-
scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));
|
624
|
+
|
625
|
+
case "auto":
|
626
|
+
const horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale);
|
627
|
+
scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale);
|
515
628
|
break;
|
629
|
+
|
516
630
|
default:
|
517
|
-
console.error(this._name
|
631
|
+
console.error(`${this._name}._setScale: "${value}" is an unknown zoom value.`);
|
518
632
|
return;
|
519
633
|
}
|
634
|
+
|
635
|
+
this._setScaleUpdatePages(scale, value, noScroll, true);
|
636
|
+
}
|
637
|
+
}
|
638
|
+
|
639
|
+
_resetCurrentPageView() {
|
640
|
+
if (this.isInPresentationMode) {
|
641
|
+
this._setScale(this._currentScaleValue, true);
|
642
|
+
}
|
643
|
+
|
644
|
+
const pageView = this._pages[this._currentPageNumber - 1];
|
645
|
+
|
646
|
+
this._scrollIntoView({
|
647
|
+
pageDiv: pageView.div
|
648
|
+
});
|
649
|
+
}
|
650
|
+
|
651
|
+
scrollPageIntoView({
|
652
|
+
pageNumber,
|
653
|
+
destArray = null,
|
654
|
+
allowNegativeOffset = false,
|
655
|
+
ignoreDestinationZoom = false
|
656
|
+
}) {
|
657
|
+
if (!this.pdfDocument) {
|
658
|
+
return;
|
659
|
+
}
|
660
|
+
|
661
|
+
const pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1];
|
662
|
+
|
663
|
+
if (!pageView) {
|
664
|
+
console.error(`${this._name}.scrollPageIntoView: ` + `"${pageNumber}" is not a valid pageNumber parameter.`);
|
665
|
+
return;
|
666
|
+
}
|
667
|
+
|
668
|
+
if (this.isInPresentationMode || !destArray) {
|
669
|
+
this._setCurrentPageNumber(pageNumber, true);
|
670
|
+
|
671
|
+
return;
|
672
|
+
}
|
673
|
+
|
674
|
+
let x = 0,
|
675
|
+
y = 0;
|
676
|
+
let width = 0,
|
677
|
+
height = 0,
|
678
|
+
widthScale,
|
679
|
+
heightScale;
|
680
|
+
const changeOrientation = pageView.rotation % 180 !== 0;
|
681
|
+
const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS;
|
682
|
+
const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS;
|
683
|
+
let scale = 0;
|
684
|
+
|
685
|
+
switch (destArray[1].name) {
|
686
|
+
case "XYZ":
|
687
|
+
x = destArray[2];
|
688
|
+
y = destArray[3];
|
689
|
+
scale = destArray[4];
|
690
|
+
x = x !== null ? x : 0;
|
691
|
+
y = y !== null ? y : pageHeight;
|
692
|
+
break;
|
693
|
+
|
694
|
+
case "Fit":
|
695
|
+
case "FitB":
|
696
|
+
scale = "page-fit";
|
697
|
+
break;
|
698
|
+
|
699
|
+
case "FitH":
|
700
|
+
case "FitBH":
|
701
|
+
y = destArray[2];
|
702
|
+
scale = "page-width";
|
703
|
+
|
704
|
+
if (y === null && this._location) {
|
705
|
+
x = this._location.left;
|
706
|
+
y = this._location.top;
|
707
|
+
}
|
708
|
+
|
709
|
+
break;
|
710
|
+
|
711
|
+
case "FitV":
|
712
|
+
case "FitBV":
|
713
|
+
x = destArray[2];
|
714
|
+
width = pageWidth;
|
715
|
+
height = pageHeight;
|
716
|
+
scale = "page-height";
|
717
|
+
break;
|
718
|
+
|
719
|
+
case "FitR":
|
720
|
+
x = destArray[2];
|
721
|
+
y = destArray[3];
|
722
|
+
width = destArray[4] - x;
|
723
|
+
height = destArray[5] - y;
|
724
|
+
const hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING;
|
725
|
+
const vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING;
|
726
|
+
widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS;
|
727
|
+
heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS;
|
728
|
+
scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));
|
729
|
+
break;
|
730
|
+
|
731
|
+
default:
|
732
|
+
console.error(`${this._name}.scrollPageIntoView: ` + `"${destArray[1].name}" is not a valid destination type.`);
|
733
|
+
return;
|
734
|
+
}
|
735
|
+
|
736
|
+
if (!ignoreDestinationZoom) {
|
520
737
|
if (scale && scale !== this._currentScale) {
|
521
738
|
this.currentScaleValue = scale;
|
522
739
|
} else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) {
|
523
740
|
this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
|
524
741
|
}
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
pageNumber: pageNumber
|
529
|
-
});
|
530
|
-
return;
|
531
|
-
}
|
532
|
-
var boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)];
|
533
|
-
var left = Math.min(boundingRect[0][0], boundingRect[1][0]);
|
534
|
-
var top = Math.min(boundingRect[0][1], boundingRect[1][1]);
|
535
|
-
if (!allowNegativeOffset) {
|
536
|
-
left = Math.max(left, 0);
|
537
|
-
top = Math.max(top, 0);
|
538
|
-
}
|
742
|
+
}
|
743
|
+
|
744
|
+
if (scale === "page-fit" && !destArray[4]) {
|
539
745
|
this._scrollIntoView({
|
540
746
|
pageDiv: pageView.div,
|
541
|
-
|
542
|
-
left: left,
|
543
|
-
top: top
|
544
|
-
},
|
545
|
-
pageNumber: pageNumber
|
747
|
+
pageNumber
|
546
748
|
});
|
749
|
+
|
750
|
+
return;
|
751
|
+
}
|
752
|
+
|
753
|
+
const boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)];
|
754
|
+
let left = Math.min(boundingRect[0][0], boundingRect[1][0]);
|
755
|
+
let top = Math.min(boundingRect[0][1], boundingRect[1][1]);
|
756
|
+
|
757
|
+
if (!allowNegativeOffset) {
|
758
|
+
left = Math.max(left, 0);
|
759
|
+
top = Math.max(top, 0);
|
760
|
+
}
|
761
|
+
|
762
|
+
this._scrollIntoView({
|
763
|
+
pageDiv: pageView.div,
|
764
|
+
pageSpot: {
|
765
|
+
left,
|
766
|
+
top
|
767
|
+
},
|
768
|
+
pageNumber
|
769
|
+
});
|
770
|
+
}
|
771
|
+
|
772
|
+
_updateLocation(firstPage) {
|
773
|
+
const currentScale = this._currentScale;
|
774
|
+
const currentScaleValue = this._currentScaleValue;
|
775
|
+
const normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue;
|
776
|
+
const pageNumber = firstPage.id;
|
777
|
+
let pdfOpenParams = "#page=" + pageNumber;
|
778
|
+
pdfOpenParams += "&zoom=" + normalizedScaleValue;
|
779
|
+
const currentPageView = this._pages[pageNumber - 1];
|
780
|
+
const container = this.container;
|
781
|
+
const topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y);
|
782
|
+
const intLeft = Math.round(topLeft[0]);
|
783
|
+
const intTop = Math.round(topLeft[1]);
|
784
|
+
pdfOpenParams += "," + intLeft + "," + intTop;
|
785
|
+
this._location = {
|
786
|
+
pageNumber,
|
787
|
+
scale: normalizedScaleValue,
|
788
|
+
top: intTop,
|
789
|
+
left: intLeft,
|
790
|
+
rotation: this._pagesRotation,
|
791
|
+
pdfOpenParams
|
792
|
+
};
|
793
|
+
}
|
794
|
+
|
795
|
+
_updateHelper(visiblePages) {
|
796
|
+
throw new Error("Not implemented: _updateHelper");
|
797
|
+
}
|
798
|
+
|
799
|
+
update() {
|
800
|
+
const visible = this._getVisiblePages();
|
801
|
+
|
802
|
+
const visiblePages = visible.views,
|
803
|
+
numVisiblePages = visiblePages.length;
|
804
|
+
|
805
|
+
if (numVisiblePages === 0) {
|
806
|
+
return;
|
547
807
|
}
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
808
|
+
|
809
|
+
const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);
|
810
|
+
|
811
|
+
this._buffer.resize(newCacheSize, visiblePages);
|
812
|
+
|
813
|
+
this.renderingQueue.renderHighestPriority(visible);
|
814
|
+
|
815
|
+
this._updateHelper(visiblePages);
|
816
|
+
|
817
|
+
this._updateLocation(visible.first);
|
818
|
+
|
819
|
+
this.eventBus.dispatch("updateviewarea", {
|
820
|
+
source: this,
|
821
|
+
location: this._location
|
822
|
+
});
|
823
|
+
}
|
824
|
+
|
825
|
+
containsElement(element) {
|
826
|
+
return this.container.contains(element);
|
827
|
+
}
|
828
|
+
|
829
|
+
focus() {
|
830
|
+
this.container.focus();
|
831
|
+
}
|
832
|
+
|
833
|
+
get _isScrollModeHorizontal() {
|
834
|
+
return this.isInPresentationMode ? false : this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL;
|
835
|
+
}
|
836
|
+
|
837
|
+
get isInPresentationMode() {
|
838
|
+
return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN;
|
839
|
+
}
|
840
|
+
|
841
|
+
get isChangingPresentationMode() {
|
842
|
+
return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING;
|
843
|
+
}
|
844
|
+
|
845
|
+
get isHorizontalScrollbarEnabled() {
|
846
|
+
return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth;
|
847
|
+
}
|
848
|
+
|
849
|
+
get isVerticalScrollbarEnabled() {
|
850
|
+
return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight;
|
851
|
+
}
|
852
|
+
|
853
|
+
_getCurrentVisiblePage() {
|
854
|
+
if (!this.pagesCount) {
|
855
|
+
return {
|
856
|
+
views: []
|
576
857
|
};
|
577
858
|
}
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
for (var i = 0, ii = this._pages.length; i < ii; i++) {
|
602
|
-
if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {
|
603
|
-
this._pages[i].reset();
|
604
|
-
}
|
605
|
-
}
|
859
|
+
|
860
|
+
const pageView = this._pages[this._currentPageNumber - 1];
|
861
|
+
const element = pageView.div;
|
862
|
+
const view = {
|
863
|
+
id: pageView.id,
|
864
|
+
x: element.offsetLeft + element.clientLeft,
|
865
|
+
y: element.offsetTop + element.clientTop,
|
866
|
+
view: pageView
|
867
|
+
};
|
868
|
+
return {
|
869
|
+
first: view,
|
870
|
+
last: view,
|
871
|
+
views: [view]
|
872
|
+
};
|
873
|
+
}
|
874
|
+
|
875
|
+
_getVisiblePages() {
|
876
|
+
return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true, this._isScrollModeHorizontal);
|
877
|
+
}
|
878
|
+
|
879
|
+
isPageVisible(pageNumber) {
|
880
|
+
if (!this.pdfDocument) {
|
881
|
+
return false;
|
606
882
|
}
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
883
|
+
|
884
|
+
if (pageNumber < 1 || pageNumber > this.pagesCount) {
|
885
|
+
console.error(`${this._name}.isPageVisible: "${pageNumber}" is out of bounds.`);
|
886
|
+
return false;
|
887
|
+
}
|
888
|
+
|
889
|
+
return this._getVisiblePages().views.some(function (view) {
|
890
|
+
return view.id === pageNumber;
|
891
|
+
});
|
892
|
+
}
|
893
|
+
|
894
|
+
cleanup() {
|
895
|
+
for (let i = 0, ii = this._pages.length; i < ii; i++) {
|
896
|
+
if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {
|
897
|
+
this._pages[i].reset();
|
614
898
|
}
|
615
899
|
}
|
616
|
-
}
|
617
|
-
key: '_ensurePdfPageLoaded',
|
618
|
-
value: function _ensurePdfPageLoaded(pageView) {
|
619
|
-
var _this3 = this;
|
900
|
+
}
|
620
901
|
|
621
|
-
|
622
|
-
|
902
|
+
_cancelRendering() {
|
903
|
+
for (let i = 0, ii = this._pages.length; i < ii; i++) {
|
904
|
+
if (this._pages[i]) {
|
905
|
+
this._pages[i].cancelRendering();
|
623
906
|
}
|
624
|
-
|
625
|
-
|
626
|
-
|
907
|
+
}
|
908
|
+
}
|
909
|
+
|
910
|
+
_ensurePdfPageLoaded(pageView) {
|
911
|
+
if (pageView.pdfPage) {
|
912
|
+
return Promise.resolve(pageView.pdfPage);
|
913
|
+
}
|
914
|
+
|
915
|
+
if (this._pagesRequests.has(pageView)) {
|
916
|
+
return this._pagesRequests.get(pageView);
|
917
|
+
}
|
918
|
+
|
919
|
+
const promise = this.pdfDocument.getPage(pageView.id).then(pdfPage => {
|
920
|
+
if (!pageView.pdfPage) {
|
921
|
+
pageView.setPdfPage(pdfPage);
|
627
922
|
}
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
923
|
+
|
924
|
+
this._pagesRequests.delete(pageView);
|
925
|
+
|
926
|
+
return pdfPage;
|
927
|
+
}).catch(reason => {
|
928
|
+
console.error("Unable to get page for page view", reason);
|
929
|
+
|
930
|
+
this._pagesRequests.delete(pageView);
|
931
|
+
});
|
932
|
+
|
933
|
+
this._pagesRequests.set(pageView, promise);
|
934
|
+
|
935
|
+
return promise;
|
936
|
+
}
|
937
|
+
|
938
|
+
forceRendering(currentlyVisiblePages) {
|
939
|
+
const visiblePages = currentlyVisiblePages || this._getVisiblePages();
|
940
|
+
|
941
|
+
const scrollAhead = this._isScrollModeHorizontal ? this.scroll.right : this.scroll.down;
|
942
|
+
const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead);
|
943
|
+
|
944
|
+
if (pageView) {
|
945
|
+
this._ensurePdfPageLoaded(pageView).then(() => {
|
946
|
+
this.renderingQueue.renderView(pageView);
|
637
947
|
});
|
638
|
-
|
639
|
-
return
|
640
|
-
}
|
641
|
-
}, {
|
642
|
-
key: 'forceRendering',
|
643
|
-
value: function forceRendering(currentlyVisiblePages) {
|
644
|
-
var _this4 = this;
|
645
|
-
|
646
|
-
var visiblePages = currentlyVisiblePages || this._getVisiblePages();
|
647
|
-
var scrollAhead = this._isScrollModeHorizontal ? this.scroll.right : this.scroll.down;
|
648
|
-
var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead);
|
649
|
-
if (pageView) {
|
650
|
-
this._ensurePdfPageLoaded(pageView).then(function () {
|
651
|
-
_this4.renderingQueue.renderView(pageView);
|
652
|
-
});
|
653
|
-
return true;
|
654
|
-
}
|
655
|
-
return false;
|
948
|
+
|
949
|
+
return true;
|
656
950
|
}
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
951
|
+
|
952
|
+
return false;
|
953
|
+
}
|
954
|
+
|
955
|
+
createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus) {
|
956
|
+
return new _text_layer_builder.TextLayerBuilder({
|
957
|
+
textLayerDiv,
|
958
|
+
eventBus,
|
959
|
+
pageIndex,
|
960
|
+
viewport,
|
961
|
+
findController: this.isInPresentationMode ? null : this.findController,
|
962
|
+
enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection
|
963
|
+
});
|
964
|
+
}
|
965
|
+
|
966
|
+
createAnnotationLayerBuilder(pageDiv, pdfPage, imageResourcesPath = "", renderInteractiveForms = false, l10n = _ui_utils.NullL10n) {
|
967
|
+
return new _annotation_layer_builder.AnnotationLayerBuilder({
|
968
|
+
pageDiv,
|
969
|
+
pdfPage,
|
970
|
+
imageResourcesPath,
|
971
|
+
renderInteractiveForms,
|
972
|
+
linkService: this.linkService,
|
973
|
+
downloadManager: this.downloadManager,
|
974
|
+
l10n
|
975
|
+
});
|
976
|
+
}
|
977
|
+
|
978
|
+
get hasEqualPageSizes() {
|
979
|
+
const firstPageView = this._pages[0];
|
980
|
+
|
981
|
+
for (let i = 1, ii = this._pages.length; i < ii; ++i) {
|
982
|
+
const pageView = this._pages[i];
|
983
|
+
|
984
|
+
if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) {
|
985
|
+
return false;
|
986
|
+
}
|
670
987
|
}
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
pageDiv: pageDiv,
|
680
|
-
pdfPage: pdfPage,
|
681
|
-
imageResourcesPath: imageResourcesPath,
|
682
|
-
renderInteractiveForms: renderInteractiveForms,
|
683
|
-
linkService: this.linkService,
|
684
|
-
downloadManager: this.downloadManager,
|
685
|
-
l10n: l10n
|
988
|
+
|
989
|
+
return true;
|
990
|
+
}
|
991
|
+
|
992
|
+
getPagesOverview() {
|
993
|
+
const pagesOverview = this._pages.map(function (pageView) {
|
994
|
+
const viewport = pageView.pdfPage.getViewport({
|
995
|
+
scale: 1
|
686
996
|
});
|
997
|
+
return {
|
998
|
+
width: viewport.width,
|
999
|
+
height: viewport.height,
|
1000
|
+
rotation: viewport.rotation
|
1001
|
+
};
|
1002
|
+
});
|
1003
|
+
|
1004
|
+
if (!this.enablePrintAutoRotate) {
|
1005
|
+
return pagesOverview;
|
687
1006
|
}
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
return {
|
694
|
-
width: viewport.width,
|
695
|
-
height: viewport.height,
|
696
|
-
rotation: viewport.rotation
|
697
|
-
};
|
698
|
-
});
|
699
|
-
if (!this.enablePrintAutoRotate) {
|
700
|
-
return pagesOverview;
|
1007
|
+
|
1008
|
+
const isFirstPagePortrait = (0, _ui_utils.isPortraitOrientation)(pagesOverview[0]);
|
1009
|
+
return pagesOverview.map(function (size) {
|
1010
|
+
if (isFirstPagePortrait === (0, _ui_utils.isPortraitOrientation)(size)) {
|
1011
|
+
return size;
|
701
1012
|
}
|
702
|
-
|
703
|
-
return
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
1013
|
+
|
1014
|
+
return {
|
1015
|
+
width: size.height,
|
1016
|
+
height: size.width,
|
1017
|
+
rotation: (size.rotation + 90) % 360
|
1018
|
+
};
|
1019
|
+
});
|
1020
|
+
}
|
1021
|
+
|
1022
|
+
get scrollMode() {
|
1023
|
+
return this._scrollMode;
|
1024
|
+
}
|
1025
|
+
|
1026
|
+
set scrollMode(mode) {
|
1027
|
+
if (this._scrollMode === mode) {
|
1028
|
+
return;
|
713
1029
|
}
|
714
|
-
}, {
|
715
|
-
key: '_updateScrollMode',
|
716
|
-
value: function _updateScrollMode() {
|
717
|
-
var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
718
1030
|
|
719
|
-
|
1031
|
+
if (!(0, _ui_utils.isValidScrollMode)(mode)) {
|
1032
|
+
throw new Error(`Invalid scroll mode: ${mode}`);
|
1033
|
+
}
|
1034
|
+
|
1035
|
+
this._scrollMode = mode;
|
1036
|
+
this.eventBus.dispatch("scrollmodechanged", {
|
1037
|
+
source: this,
|
1038
|
+
mode
|
1039
|
+
});
|
1040
|
+
|
1041
|
+
this._updateScrollMode(this._currentPageNumber);
|
1042
|
+
}
|
1043
|
+
|
1044
|
+
_updateScrollMode(pageNumber = null) {
|
1045
|
+
const scrollMode = this._scrollMode,
|
720
1046
|
viewer = this.viewer;
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
if (this._currentScaleValue && isNaN(this._currentScaleValue)) {
|
727
|
-
this._setScale(this._currentScaleValue, true);
|
728
|
-
}
|
729
|
-
this.scrollPageIntoView({ pageNumber: pageNumber });
|
730
|
-
this.update();
|
1047
|
+
viewer.classList.toggle("scrollHorizontal", scrollMode === _ui_utils.ScrollMode.HORIZONTAL);
|
1048
|
+
viewer.classList.toggle("scrollWrapped", scrollMode === _ui_utils.ScrollMode.WRAPPED);
|
1049
|
+
|
1050
|
+
if (!this.pdfDocument || !pageNumber) {
|
1051
|
+
return;
|
731
1052
|
}
|
732
|
-
}, {
|
733
|
-
key: '_updateSpreadMode',
|
734
|
-
value: function _updateSpreadMode() {
|
735
|
-
var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
736
1053
|
|
737
|
-
|
738
|
-
|
739
|
-
}
|
740
|
-
var viewer = this.viewer,
|
741
|
-
pages = this._pages;
|
742
|
-
viewer.textContent = '';
|
743
|
-
if (this._spreadMode === SpreadMode.NONE) {
|
744
|
-
for (var i = 0, iMax = pages.length; i < iMax; ++i) {
|
745
|
-
viewer.appendChild(pages[i].div);
|
746
|
-
}
|
747
|
-
} else {
|
748
|
-
var parity = this._spreadMode - 1;
|
749
|
-
var spread = null;
|
750
|
-
for (var _i = 0, _iMax = pages.length; _i < _iMax; ++_i) {
|
751
|
-
if (spread === null) {
|
752
|
-
spread = document.createElement('div');
|
753
|
-
spread.className = 'spread';
|
754
|
-
viewer.appendChild(spread);
|
755
|
-
} else if (_i % 2 === parity) {
|
756
|
-
spread = spread.cloneNode(false);
|
757
|
-
viewer.appendChild(spread);
|
758
|
-
}
|
759
|
-
spread.appendChild(pages[_i].div);
|
760
|
-
}
|
761
|
-
}
|
762
|
-
if (!pageNumber) {
|
763
|
-
return;
|
764
|
-
}
|
765
|
-
this.scrollPageIntoView({ pageNumber: pageNumber });
|
766
|
-
this.update();
|
1054
|
+
if (this._currentScaleValue && isNaN(this._currentScaleValue)) {
|
1055
|
+
this._setScale(this._currentScaleValue, true);
|
767
1056
|
}
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
return this._currentPageNumber;
|
782
|
-
},
|
783
|
-
set: function set(val) {
|
784
|
-
if (!Number.isInteger(val)) {
|
785
|
-
throw new Error('Invalid page number.');
|
786
|
-
}
|
787
|
-
if (!this.pdfDocument) {
|
788
|
-
return;
|
789
|
-
}
|
790
|
-
this._setCurrentPageNumber(val, true);
|
791
|
-
}
|
792
|
-
}, {
|
793
|
-
key: 'currentPageLabel',
|
794
|
-
get: function get() {
|
795
|
-
return this._pageLabels && this._pageLabels[this._currentPageNumber - 1];
|
796
|
-
},
|
797
|
-
set: function set(val) {
|
798
|
-
var pageNumber = val | 0;
|
799
|
-
if (this._pageLabels) {
|
800
|
-
var i = this._pageLabels.indexOf(val);
|
801
|
-
if (i >= 0) {
|
802
|
-
pageNumber = i + 1;
|
803
|
-
}
|
804
|
-
}
|
805
|
-
this.currentPageNumber = pageNumber;
|
806
|
-
}
|
807
|
-
}, {
|
808
|
-
key: 'currentScale',
|
809
|
-
get: function get() {
|
810
|
-
return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE;
|
811
|
-
},
|
812
|
-
set: function set(val) {
|
813
|
-
if (isNaN(val)) {
|
814
|
-
throw new Error('Invalid numeric scale');
|
815
|
-
}
|
816
|
-
if (!this.pdfDocument) {
|
817
|
-
return;
|
818
|
-
}
|
819
|
-
this._setScale(val, false);
|
820
|
-
}
|
821
|
-
}, {
|
822
|
-
key: 'currentScaleValue',
|
823
|
-
get: function get() {
|
824
|
-
return this._currentScaleValue;
|
825
|
-
},
|
826
|
-
set: function set(val) {
|
827
|
-
if (!this.pdfDocument) {
|
828
|
-
return;
|
829
|
-
}
|
830
|
-
this._setScale(val, false);
|
831
|
-
}
|
832
|
-
}, {
|
833
|
-
key: 'pagesRotation',
|
834
|
-
get: function get() {
|
835
|
-
return this._pagesRotation;
|
836
|
-
},
|
837
|
-
set: function set(rotation) {
|
838
|
-
if (!(0, _ui_utils.isValidRotation)(rotation)) {
|
839
|
-
throw new Error('Invalid pages rotation angle.');
|
840
|
-
}
|
841
|
-
if (!this.pdfDocument) {
|
842
|
-
return;
|
843
|
-
}
|
844
|
-
if (this._pagesRotation === rotation) {
|
845
|
-
return;
|
846
|
-
}
|
847
|
-
this._pagesRotation = rotation;
|
848
|
-
var pageNumber = this._currentPageNumber;
|
849
|
-
for (var i = 0, ii = this._pages.length; i < ii; i++) {
|
850
|
-
var pageView = this._pages[i];
|
851
|
-
pageView.update(pageView.scale, rotation);
|
852
|
-
}
|
853
|
-
if (this._currentScaleValue) {
|
854
|
-
this._setScale(this._currentScaleValue, true);
|
855
|
-
}
|
856
|
-
this.eventBus.dispatch('rotationchanging', {
|
857
|
-
source: this,
|
858
|
-
pagesRotation: rotation,
|
859
|
-
pageNumber: pageNumber
|
860
|
-
});
|
861
|
-
if (this.defaultRenderingQueue) {
|
862
|
-
this.update();
|
863
|
-
}
|
1057
|
+
|
1058
|
+
this._setCurrentPageNumber(pageNumber, true);
|
1059
|
+
|
1060
|
+
this.update();
|
1061
|
+
}
|
1062
|
+
|
1063
|
+
get spreadMode() {
|
1064
|
+
return this._spreadMode;
|
1065
|
+
}
|
1066
|
+
|
1067
|
+
set spreadMode(mode) {
|
1068
|
+
if (this._spreadMode === mode) {
|
1069
|
+
return;
|
864
1070
|
}
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
throw new Error('Not implemented: _setDocumentViewerElement');
|
869
|
-
}
|
870
|
-
}, {
|
871
|
-
key: '_isScrollModeHorizontal',
|
872
|
-
get: function get() {
|
873
|
-
throw new Error('Not implemented: _isScrollModeHorizontal');
|
874
|
-
}
|
875
|
-
}, {
|
876
|
-
key: 'isInPresentationMode',
|
877
|
-
get: function get() {
|
878
|
-
return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN;
|
879
|
-
}
|
880
|
-
}, {
|
881
|
-
key: 'isChangingPresentationMode',
|
882
|
-
get: function get() {
|
883
|
-
return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING;
|
884
|
-
}
|
885
|
-
}, {
|
886
|
-
key: 'isHorizontalScrollbarEnabled',
|
887
|
-
get: function get() {
|
888
|
-
return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth;
|
889
|
-
}
|
890
|
-
}, {
|
891
|
-
key: 'isVerticalScrollbarEnabled',
|
892
|
-
get: function get() {
|
893
|
-
return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight;
|
894
|
-
}
|
895
|
-
}, {
|
896
|
-
key: 'hasEqualPageSizes',
|
897
|
-
get: function get() {
|
898
|
-
var firstPageView = this._pages[0];
|
899
|
-
for (var i = 1, ii = this._pages.length; i < ii; ++i) {
|
900
|
-
var pageView = this._pages[i];
|
901
|
-
if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) {
|
902
|
-
return false;
|
903
|
-
}
|
904
|
-
}
|
905
|
-
return true;
|
1071
|
+
|
1072
|
+
if (!(0, _ui_utils.isValidSpreadMode)(mode)) {
|
1073
|
+
throw new Error(`Invalid spread mode: ${mode}`);
|
906
1074
|
}
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
return this._spreadMode;
|
930
|
-
},
|
931
|
-
set: function set(mode) {
|
932
|
-
if (this._spreadMode === mode) {
|
933
|
-
return;
|
1075
|
+
|
1076
|
+
this._spreadMode = mode;
|
1077
|
+
this.eventBus.dispatch("spreadmodechanged", {
|
1078
|
+
source: this,
|
1079
|
+
mode
|
1080
|
+
});
|
1081
|
+
|
1082
|
+
this._updateSpreadMode(this._currentPageNumber);
|
1083
|
+
}
|
1084
|
+
|
1085
|
+
_updateSpreadMode(pageNumber = null) {
|
1086
|
+
if (!this.pdfDocument) {
|
1087
|
+
return;
|
1088
|
+
}
|
1089
|
+
|
1090
|
+
const viewer = this.viewer,
|
1091
|
+
pages = this._pages;
|
1092
|
+
viewer.textContent = "";
|
1093
|
+
|
1094
|
+
if (this._spreadMode === _ui_utils.SpreadMode.NONE) {
|
1095
|
+
for (let i = 0, iMax = pages.length; i < iMax; ++i) {
|
1096
|
+
viewer.appendChild(pages[i].div);
|
934
1097
|
}
|
935
|
-
|
936
|
-
|
1098
|
+
} else {
|
1099
|
+
const parity = this._spreadMode - 1;
|
1100
|
+
let spread = null;
|
1101
|
+
|
1102
|
+
for (let i = 0, iMax = pages.length; i < iMax; ++i) {
|
1103
|
+
if (spread === null) {
|
1104
|
+
spread = document.createElement("div");
|
1105
|
+
spread.className = "spread";
|
1106
|
+
viewer.appendChild(spread);
|
1107
|
+
} else if (i % 2 === parity) {
|
1108
|
+
spread = spread.cloneNode(false);
|
1109
|
+
viewer.appendChild(spread);
|
1110
|
+
}
|
1111
|
+
|
1112
|
+
spread.appendChild(pages[i].div);
|
937
1113
|
}
|
938
|
-
this._spreadMode = mode;
|
939
|
-
this.eventBus.dispatch('spreadmodechanged', {
|
940
|
-
source: this,
|
941
|
-
mode: mode
|
942
|
-
});
|
943
|
-
this._updateSpreadMode(this._currentPageNumber);
|
944
1114
|
}
|
945
|
-
}]);
|
946
1115
|
|
947
|
-
|
948
|
-
|
1116
|
+
if (!pageNumber) {
|
1117
|
+
return;
|
1118
|
+
}
|
1119
|
+
|
1120
|
+
this._setCurrentPageNumber(pageNumber, true);
|
1121
|
+
|
1122
|
+
this.update();
|
1123
|
+
}
|
1124
|
+
|
1125
|
+
}
|
949
1126
|
|
950
|
-
exports.BaseViewer = BaseViewer;
|
951
|
-
exports.ScrollMode = ScrollMode;
|
952
|
-
exports.SpreadMode = SpreadMode;
|
1127
|
+
exports.BaseViewer = BaseViewer;
|