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