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