pdfjs-dist 2.5.207 → 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/bower.json +1 -1
- package/build/pdf.js +867 -216
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +1 -1
- package/build/pdf.worker.js +10214 -8547
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +1 -1
- package/es5/build/pdf.js +2023 -1046
- package/es5/build/pdf.js.map +1 -1
- package/es5/build/pdf.min.js +22 -0
- package/es5/build/pdf.worker.js +11136 -8144
- package/es5/build/pdf.worker.js.map +1 -1
- 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/shadow.png +0 -0
- package/es5/web/pdf_viewer.css +8 -5
- package/es5/web/pdf_viewer.js +195 -51
- package/es5/web/pdf_viewer.js.map +1 -1
- package/image_decoders/pdf.image_decoders.js +24 -16
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +1 -1
- package/lib/core/annotation.js +479 -43
- package/lib/core/cff_parser.js +643 -615
- package/lib/core/chunked_stream.js +64 -50
- package/lib/core/colorspace.js +126 -104
- package/lib/core/crypto.js +37 -0
- package/lib/core/document.js +128 -75
- package/lib/core/evaluator.js +3015 -2754
- package/lib/core/fonts.js +47 -46
- package/lib/core/function.js +79 -6
- package/lib/core/image.js +364 -357
- package/lib/core/image_utils.js +109 -8
- package/lib/core/jpg.js +8 -3
- package/lib/core/obj.js +255 -34
- package/lib/core/operator_list.js +17 -15
- package/lib/core/parser.js +40 -3
- package/lib/core/pattern.js +24 -11
- package/lib/core/primitives.js +112 -53
- package/lib/core/type1_parser.js +2 -0
- package/lib/core/worker.js +102 -37
- package/lib/core/writer.js +242 -0
- package/lib/display/annotation_layer.js +51 -10
- package/lib/display/annotation_storage.js +89 -0
- package/lib/display/api.js +140 -54
- package/lib/display/canvas.js +215 -46
- package/lib/display/display_utils.js +55 -18
- package/lib/display/fetch_stream.js +6 -0
- package/lib/display/font_loader.js +26 -15
- package/lib/display/metadata.js +1 -7
- package/lib/display/network.js +0 -14
- package/lib/display/node_utils.js +87 -0
- package/lib/display/optional_content_config.js +184 -0
- package/lib/display/svg.js +1 -1
- package/lib/display/text_layer.js +4 -1
- package/lib/pdf.js +2 -2
- package/lib/pdf.worker.js +2 -2
- package/lib/shared/is_node.js +1 -1
- package/lib/shared/util.js +13 -10
- package/lib/test/unit/annotation_spec.js +520 -50
- package/lib/test/unit/annotation_storage_spec.js +83 -0
- package/lib/test/unit/api_spec.js +16 -6
- package/lib/test/unit/cmap_spec.js +4 -4
- package/lib/test/unit/colorspace_spec.js +216 -24
- package/lib/test/unit/crypto_spec.js +51 -4
- package/lib/test/unit/custom_spec.js +129 -1
- package/lib/test/unit/document_spec.js +112 -1
- package/lib/test/unit/evaluator_spec.js +29 -10
- package/lib/test/unit/jasmine-boot.js +1 -1
- package/lib/test/unit/metadata_spec.js +3 -3
- package/lib/test/unit/primitives_spec.js +242 -63
- package/lib/test/unit/test_utils.js +42 -89
- package/lib/test/unit/testreporter.js +17 -6
- package/lib/test/unit/util_spec.js +13 -12
- package/lib/test/unit/writer_spec.js +84 -0
- package/lib/web/annotation_layer_builder.js +13 -9
- package/lib/web/app.js +231 -26
- package/lib/web/app_options.js +1 -6
- package/lib/web/base_tree_viewer.js +100 -0
- package/lib/web/base_viewer.js +53 -4
- package/lib/web/download_manager.js +3 -10
- package/lib/web/firefox_print_service.js +32 -12
- package/lib/web/firefoxcom.js +20 -6
- package/lib/web/interfaces.js +1 -1
- package/lib/web/pdf_attachment_viewer.js +80 -38
- package/lib/web/pdf_find_controller.js +2 -1
- package/lib/web/pdf_layer_viewer.js +208 -0
- package/lib/web/pdf_outline_viewer.js +24 -57
- package/lib/web/pdf_page_view.js +29 -6
- package/lib/web/pdf_print_service.js +13 -11
- package/lib/web/pdf_sidebar.js +46 -25
- package/lib/web/pdf_thumbnail_view.js +16 -3
- package/lib/web/pdf_thumbnail_viewer.js +17 -1
- package/lib/web/pdf_viewer.component.js +2 -2
- package/lib/web/preferences.js +1 -1
- package/lib/web/toolbar.js +1 -1
- package/lib/web/ui_utils.js +7 -1
- package/package.json +3 -1
- 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 +8 -5
- package/web/pdf_viewer.js +109 -33
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +1 -9
- package/es5/web/images/texture.png +0 -0
- package/web/images/texture.png +0 -0
package/lib/web/app.js
CHANGED
@@ -52,6 +52,8 @@ var _pdf_find_controller = require("./pdf_find_controller.js");
|
|
52
52
|
|
53
53
|
var _pdf_history = require("./pdf_history.js");
|
54
54
|
|
55
|
+
var _pdf_layer_viewer = require("./pdf_layer_viewer.js");
|
56
|
+
|
55
57
|
var _pdf_link_service = require("./pdf_link_service.js");
|
56
58
|
|
57
59
|
var _pdf_outline_viewer = require("./pdf_outline_viewer.js");
|
@@ -68,6 +70,8 @@ var _secondary_toolbar = require("./secondary_toolbar.js");
|
|
68
70
|
|
69
71
|
var _toolbar = require("./toolbar.js");
|
70
72
|
|
73
|
+
var _viewer_compatibility = require("./viewer_compatibility.js");
|
74
|
+
|
71
75
|
var _view_history = require("./view_history.js");
|
72
76
|
|
73
77
|
const DEFAULT_SCALE_DELTA = 1.1;
|
@@ -80,6 +84,8 @@ const ViewOnLoad = {
|
|
80
84
|
PREVIOUS: 0,
|
81
85
|
INITIAL: 1
|
82
86
|
};
|
87
|
+
const KNOWN_VERSIONS = ["1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2.0", "2.1", "2.2", "2.3"];
|
88
|
+
const KNOWN_GENERATORS = ["acrobat distiller", "acrobat pdfwriter", "adobe livecycle", "adobe pdf library", "adobe photoshop", "ghostscript", "tcpdf", "cairo", "dvipdfm", "dvips", "pdftex", "pdfkit", "itext", "prince", "quarkxpress", "mac os x", "microsoft", "openoffice", "oracle", "luradocument", "pdf-xchange", "antenna house", "aspose.cells", "fpdf"];
|
83
89
|
|
84
90
|
class DefaultExternalServices {
|
85
91
|
constructor() {
|
@@ -149,6 +155,7 @@ const PDFViewerApplication = {
|
|
149
155
|
pdfSidebarResizer: null,
|
150
156
|
pdfOutlineViewer: null,
|
151
157
|
pdfAttachmentViewer: null,
|
158
|
+
pdfLayerViewer: null,
|
152
159
|
pdfCursorTools: null,
|
153
160
|
store: null,
|
154
161
|
downloadManager: null,
|
@@ -166,6 +173,9 @@ const PDFViewerApplication = {
|
|
166
173
|
externalServices: DefaultExternalServices,
|
167
174
|
_boundEvents: {},
|
168
175
|
contentDispositionFilename: null,
|
176
|
+
triggerDelayedFallback: null,
|
177
|
+
_saveInProgress: false,
|
178
|
+
_wheelUnusedTicks: 0,
|
169
179
|
|
170
180
|
async initialize(appConfig) {
|
171
181
|
this.preferences = this.externalServices.createPreferences();
|
@@ -312,9 +322,7 @@ const PDFViewerApplication = {
|
|
312
322
|
ignoreDestinationZoom: _app_options.AppOptions.get("ignoreDestinationZoom")
|
313
323
|
});
|
314
324
|
this.pdfLinkService = pdfLinkService;
|
315
|
-
const downloadManager = this.externalServices.createDownloadManager(
|
316
|
-
disableCreateObjectURL: _app_options.AppOptions.get("disableCreateObjectURL")
|
317
|
-
});
|
325
|
+
const downloadManager = this.externalServices.createDownloadManager();
|
318
326
|
this.downloadManager = downloadManager;
|
319
327
|
const findController = new _pdf_find_controller.PDFFindController({
|
320
328
|
linkService: pdfLinkService,
|
@@ -345,6 +353,7 @@ const PDFViewerApplication = {
|
|
345
353
|
pdfLinkService.setViewer(this.pdfViewer);
|
346
354
|
this.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({
|
347
355
|
container: appConfig.sidebar.thumbnailView,
|
356
|
+
eventBus,
|
348
357
|
renderingQueue: pdfRenderingQueue,
|
349
358
|
linkService: pdfLinkService,
|
350
359
|
l10n: this.l10n
|
@@ -389,6 +398,11 @@ const PDFViewerApplication = {
|
|
389
398
|
eventBus,
|
390
399
|
downloadManager
|
391
400
|
});
|
401
|
+
this.pdfLayerViewer = new _pdf_layer_viewer.PDFLayerViewer({
|
402
|
+
container: appConfig.sidebar.layersView,
|
403
|
+
eventBus,
|
404
|
+
l10n: this.l10n
|
405
|
+
});
|
392
406
|
this.pdfSidebar = new _pdf_sidebar.PDFSidebar({
|
393
407
|
elements: appConfig.sidebar,
|
394
408
|
pdfViewer: this.pdfViewer,
|
@@ -555,9 +569,12 @@ const PDFViewerApplication = {
|
|
555
569
|
this.url = "";
|
556
570
|
this.baseUrl = "";
|
557
571
|
this.contentDispositionFilename = null;
|
572
|
+
this.triggerDelayedFallback = null;
|
573
|
+
this._saveInProgress = false;
|
558
574
|
this.pdfSidebar.reset();
|
559
575
|
this.pdfOutlineViewer.reset();
|
560
576
|
this.pdfAttachmentViewer.reset();
|
577
|
+
this.pdfLayerViewer.reset();
|
561
578
|
|
562
579
|
if (this.pdfHistory) {
|
563
580
|
this.pdfHistory.reset();
|
@@ -668,7 +685,9 @@ const PDFViewerApplication = {
|
|
668
685
|
});
|
669
686
|
},
|
670
687
|
|
671
|
-
download(
|
688
|
+
download({
|
689
|
+
sourceEventType = "download"
|
690
|
+
} = {}) {
|
672
691
|
function downloadByUrl() {
|
673
692
|
downloadManager.downloadUrl(url, filename);
|
674
693
|
}
|
@@ -690,11 +709,67 @@ const PDFViewerApplication = {
|
|
690
709
|
const blob = new Blob([data], {
|
691
710
|
type: "application/pdf"
|
692
711
|
});
|
693
|
-
downloadManager.download(blob, url, filename);
|
712
|
+
downloadManager.download(blob, url, filename, sourceEventType);
|
694
713
|
}).catch(downloadByUrl);
|
695
714
|
},
|
696
715
|
|
716
|
+
save({
|
717
|
+
sourceEventType = "download"
|
718
|
+
} = {}) {
|
719
|
+
if (this._saveInProgress) {
|
720
|
+
return;
|
721
|
+
}
|
722
|
+
|
723
|
+
const url = this.baseUrl;
|
724
|
+
const filename = this.contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url);
|
725
|
+
const downloadManager = this.downloadManager;
|
726
|
+
|
727
|
+
downloadManager.onerror = err => {
|
728
|
+
this.error(`PDF failed to be saved: ${err}`);
|
729
|
+
};
|
730
|
+
|
731
|
+
if (!this.pdfDocument || !this.downloadComplete) {
|
732
|
+
this.download({
|
733
|
+
sourceEventType
|
734
|
+
});
|
735
|
+
return;
|
736
|
+
}
|
737
|
+
|
738
|
+
this._saveInProgress = true;
|
739
|
+
this.pdfDocument.saveDocument(this.pdfDocument.annotationStorage).then(data => {
|
740
|
+
const blob = new Blob([data], {
|
741
|
+
type: "application/pdf"
|
742
|
+
});
|
743
|
+
downloadManager.download(blob, url, filename, sourceEventType);
|
744
|
+
}).catch(() => {
|
745
|
+
this.download({
|
746
|
+
sourceEventType
|
747
|
+
});
|
748
|
+
}).finally(() => {
|
749
|
+
this._saveInProgress = false;
|
750
|
+
});
|
751
|
+
},
|
752
|
+
|
753
|
+
_delayedFallback(featureId) {
|
754
|
+
this.externalServices.reportTelemetry({
|
755
|
+
type: "unsupportedFeature",
|
756
|
+
featureId
|
757
|
+
});
|
758
|
+
|
759
|
+
if (!this.triggerDelayedFallback) {
|
760
|
+
this.triggerDelayedFallback = () => {
|
761
|
+
this.fallback(featureId);
|
762
|
+
this.triggerDelayedFallback = null;
|
763
|
+
};
|
764
|
+
}
|
765
|
+
},
|
766
|
+
|
697
767
|
fallback(featureId) {
|
768
|
+
this.externalServices.reportTelemetry({
|
769
|
+
type: "unsupportedFeature",
|
770
|
+
featureId
|
771
|
+
});
|
772
|
+
|
698
773
|
if (this.fellback) {
|
699
774
|
return;
|
700
775
|
}
|
@@ -708,7 +783,9 @@ const PDFViewerApplication = {
|
|
708
783
|
return;
|
709
784
|
}
|
710
785
|
|
711
|
-
PDFViewerApplication.download(
|
786
|
+
PDFViewerApplication.download({
|
787
|
+
sourceEventType: "download"
|
788
|
+
});
|
712
789
|
});
|
713
790
|
},
|
714
791
|
|
@@ -826,6 +903,16 @@ const PDFViewerApplication = {
|
|
826
903
|
baseDocumentUrl = null;
|
827
904
|
this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);
|
828
905
|
this.pdfDocumentProperties.setDocument(pdfDocument, this.url);
|
906
|
+
const annotationStorage = pdfDocument.annotationStorage;
|
907
|
+
|
908
|
+
annotationStorage.onSetModified = function () {
|
909
|
+
window.addEventListener("beforeunload", beforeUnload);
|
910
|
+
};
|
911
|
+
|
912
|
+
annotationStorage.onResetModified = function () {
|
913
|
+
window.removeEventListener("beforeunload", beforeUnload);
|
914
|
+
};
|
915
|
+
|
829
916
|
const pdfViewer = this.pdfViewer;
|
830
917
|
pdfViewer.setDocument(pdfDocument);
|
831
918
|
const {
|
@@ -947,6 +1034,12 @@ const PDFViewerApplication = {
|
|
947
1034
|
attachments
|
948
1035
|
});
|
949
1036
|
});
|
1037
|
+
pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => {
|
1038
|
+
this.pdfLayerViewer.render({
|
1039
|
+
optionalContentConfig,
|
1040
|
+
pdfDocument
|
1041
|
+
});
|
1042
|
+
});
|
950
1043
|
});
|
951
1044
|
|
952
1045
|
this._initializePageLabels(pdfDocument);
|
@@ -974,7 +1067,9 @@ const PDFViewerApplication = {
|
|
974
1067
|
}
|
975
1068
|
|
976
1069
|
console.warn("Warning: JavaScript is not supported");
|
977
|
-
|
1070
|
+
|
1071
|
+
this._delayedFallback(_pdf.UNSUPPORTED_FEATURES.javaScript);
|
1072
|
+
|
978
1073
|
return true;
|
979
1074
|
});
|
980
1075
|
|
@@ -1035,20 +1130,23 @@ const PDFViewerApplication = {
|
|
1035
1130
|
this.setTitle(contentDispositionFilename);
|
1036
1131
|
}
|
1037
1132
|
|
1038
|
-
if (info.IsAcroFormPresent) {
|
1039
|
-
console.warn("Warning:
|
1040
|
-
|
1133
|
+
if (info.IsXFAPresent && !info.IsAcroFormPresent) {
|
1134
|
+
console.warn("Warning: XFA is not supported");
|
1135
|
+
|
1136
|
+
this._delayedFallback(_pdf.UNSUPPORTED_FEATURES.forms);
|
1137
|
+
} else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderInteractiveForms) {
|
1138
|
+
console.warn("Warning: Interactive form support is not enabled");
|
1139
|
+
|
1140
|
+
this._delayedFallback(_pdf.UNSUPPORTED_FEATURES.forms);
|
1041
1141
|
}
|
1042
1142
|
|
1043
1143
|
let versionId = "other";
|
1044
|
-
const KNOWN_VERSIONS = ["1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2.0", "2.1", "2.2", "2.3"];
|
1045
1144
|
|
1046
1145
|
if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) {
|
1047
1146
|
versionId = `v${info.PDFFormatVersion.replace(".", "_")}`;
|
1048
1147
|
}
|
1049
1148
|
|
1050
1149
|
let generatorId = "other";
|
1051
|
-
const KNOWN_GENERATORS = ["acrobat distiller", "acrobat pdfwriter", "adobe livecycle", "adobe pdf library", "adobe photoshop", "ghostscript", "tcpdf", "cairo", "dvipdfm", "dvips", "pdftex", "pdfkit", "itext", "prince", "quarkxpress", "mac os x", "microsoft", "openoffice", "oracle", "luradocument", "pdf-xchange", "antenna house", "aspose.cells", "fpdf"];
|
1052
1150
|
|
1053
1151
|
if (info.Producer) {
|
1054
1152
|
const producer = info.Producer.toLowerCase();
|
@@ -1064,8 +1162,10 @@ const PDFViewerApplication = {
|
|
1064
1162
|
|
1065
1163
|
let formType = null;
|
1066
1164
|
|
1067
|
-
if (info.
|
1068
|
-
formType =
|
1165
|
+
if (info.IsXFAPresent) {
|
1166
|
+
formType = "xfa";
|
1167
|
+
} else if (info.IsAcroFormPresent) {
|
1168
|
+
formType = "acroform";
|
1069
1169
|
}
|
1070
1170
|
|
1071
1171
|
this.externalServices.reportTelemetry({
|
@@ -1244,7 +1344,11 @@ const PDFViewerApplication = {
|
|
1244
1344
|
|
1245
1345
|
const pagesOverview = this.pdfViewer.getPagesOverview();
|
1246
1346
|
const printContainer = this.appConfig.printContainer;
|
1247
|
-
|
1347
|
+
|
1348
|
+
const printResolution = _app_options.AppOptions.get("printResolution");
|
1349
|
+
|
1350
|
+
const optionalContentConfigPromise = this.pdfViewer.optionalContentConfigPromise;
|
1351
|
+
const printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, this.l10n);
|
1248
1352
|
this.printService = printService;
|
1249
1353
|
this.forceRendering();
|
1250
1354
|
printService.layout();
|
@@ -1257,6 +1361,10 @@ const PDFViewerApplication = {
|
|
1257
1361
|
if (this.printService) {
|
1258
1362
|
this.printService.destroy();
|
1259
1363
|
this.printService = null;
|
1364
|
+
|
1365
|
+
if (this.pdfDocument) {
|
1366
|
+
this.pdfDocument.annotationStorage.resetModified();
|
1367
|
+
}
|
1260
1368
|
}
|
1261
1369
|
|
1262
1370
|
this.forceRendering();
|
@@ -1319,6 +1427,8 @@ const PDFViewerApplication = {
|
|
1319
1427
|
|
1320
1428
|
eventBus._on("download", webViewerDownload);
|
1321
1429
|
|
1430
|
+
eventBus._on("save", webViewerSave);
|
1431
|
+
|
1322
1432
|
eventBus._on("firstpage", webViewerFirstPage);
|
1323
1433
|
|
1324
1434
|
eventBus._on("lastpage", webViewerLastPage);
|
@@ -1341,6 +1451,8 @@ const PDFViewerApplication = {
|
|
1341
1451
|
|
1342
1452
|
eventBus._on("rotateccw", webViewerRotateCcw);
|
1343
1453
|
|
1454
|
+
eventBus._on("optionalcontentconfig", webViewerOptionalContentConfig);
|
1455
|
+
|
1344
1456
|
eventBus._on("switchscrollmode", webViewerSwitchScrollMode);
|
1345
1457
|
|
1346
1458
|
eventBus._on("scrollmodechanged", webViewerScrollModeChanged);
|
@@ -1399,8 +1511,12 @@ const PDFViewerApplication = {
|
|
1399
1511
|
window.addEventListener("wheel", webViewerWheel, {
|
1400
1512
|
passive: false
|
1401
1513
|
});
|
1514
|
+
window.addEventListener("touchstart", webViewerTouchStart, {
|
1515
|
+
passive: false
|
1516
|
+
});
|
1402
1517
|
window.addEventListener("click", webViewerClick);
|
1403
1518
|
window.addEventListener("keydown", webViewerKeyDown);
|
1519
|
+
window.addEventListener("keyup", webViewerKeyUp);
|
1404
1520
|
window.addEventListener("resize", _boundEvents.windowResize);
|
1405
1521
|
window.addEventListener("hashchange", _boundEvents.windowHashChange);
|
1406
1522
|
window.addEventListener("beforeprint", _boundEvents.windowBeforePrint);
|
@@ -1445,6 +1561,8 @@ const PDFViewerApplication = {
|
|
1445
1561
|
|
1446
1562
|
eventBus._off("download", webViewerDownload);
|
1447
1563
|
|
1564
|
+
eventBus._off("save", webViewerSave);
|
1565
|
+
|
1448
1566
|
eventBus._off("firstpage", webViewerFirstPage);
|
1449
1567
|
|
1450
1568
|
eventBus._off("lastpage", webViewerLastPage);
|
@@ -1467,6 +1585,8 @@ const PDFViewerApplication = {
|
|
1467
1585
|
|
1468
1586
|
eventBus._off("rotateccw", webViewerRotateCcw);
|
1469
1587
|
|
1588
|
+
eventBus._off("optionalcontentconfig", webViewerOptionalContentConfig);
|
1589
|
+
|
1470
1590
|
eventBus._off("switchscrollmode", webViewerSwitchScrollMode);
|
1471
1591
|
|
1472
1592
|
eventBus._off("scrollmodechanged", webViewerScrollModeChanged);
|
@@ -1501,8 +1621,12 @@ const PDFViewerApplication = {
|
|
1501
1621
|
window.removeEventListener("wheel", webViewerWheel, {
|
1502
1622
|
passive: false
|
1503
1623
|
});
|
1624
|
+
window.removeEventListener("touchstart", webViewerTouchStart, {
|
1625
|
+
passive: false
|
1626
|
+
});
|
1504
1627
|
window.removeEventListener("click", webViewerClick);
|
1505
1628
|
window.removeEventListener("keydown", webViewerKeyDown);
|
1629
|
+
window.removeEventListener("keyup", webViewerKeyUp);
|
1506
1630
|
window.removeEventListener("resize", _boundEvents.windowResize);
|
1507
1631
|
window.removeEventListener("hashchange", _boundEvents.windowHashChange);
|
1508
1632
|
window.removeEventListener("beforeprint", _boundEvents.windowBeforePrint);
|
@@ -1511,6 +1635,17 @@ const PDFViewerApplication = {
|
|
1511
1635
|
_boundEvents.windowHashChange = null;
|
1512
1636
|
_boundEvents.windowBeforePrint = null;
|
1513
1637
|
_boundEvents.windowAfterPrint = null;
|
1638
|
+
},
|
1639
|
+
|
1640
|
+
accumulateWheelTicks(ticks) {
|
1641
|
+
if (this._wheelUnusedTicks > 0 && ticks < 0 || this._wheelUnusedTicks < 0 && ticks > 0) {
|
1642
|
+
this._wheelUnusedTicks = 0;
|
1643
|
+
}
|
1644
|
+
|
1645
|
+
this._wheelUnusedTicks += ticks;
|
1646
|
+
const wholeTicks = Math.sign(this._wheelUnusedTicks) * Math.floor(Math.abs(this._wheelUnusedTicks));
|
1647
|
+
this._wheelUnusedTicks -= wholeTicks;
|
1648
|
+
return wholeTicks;
|
1514
1649
|
}
|
1515
1650
|
|
1516
1651
|
};
|
@@ -1753,6 +1888,10 @@ function webViewerPageMode({
|
|
1753
1888
|
view = _pdf_sidebar.SidebarView.ATTACHMENTS;
|
1754
1889
|
break;
|
1755
1890
|
|
1891
|
+
case "layers":
|
1892
|
+
view = _pdf_sidebar.SidebarView.LAYERS;
|
1893
|
+
break;
|
1894
|
+
|
1756
1895
|
case "none":
|
1757
1896
|
view = _pdf_sidebar.SidebarView.NONE;
|
1758
1897
|
break;
|
@@ -1766,9 +1905,7 @@ function webViewerPageMode({
|
|
1766
1905
|
}
|
1767
1906
|
|
1768
1907
|
function webViewerNamedAction(evt) {
|
1769
|
-
|
1770
|
-
|
1771
|
-
switch (action) {
|
1908
|
+
switch (evt.action) {
|
1772
1909
|
case "GoToPage":
|
1773
1910
|
PDFViewerApplication.appConfig.toolbar.pageNumber.select();
|
1774
1911
|
break;
|
@@ -1779,6 +1916,17 @@ function webViewerNamedAction(evt) {
|
|
1779
1916
|
}
|
1780
1917
|
|
1781
1918
|
break;
|
1919
|
+
|
1920
|
+
case "Print":
|
1921
|
+
if (PDFViewerApplication.supportsPrinting) {
|
1922
|
+
webViewerPrint();
|
1923
|
+
}
|
1924
|
+
|
1925
|
+
break;
|
1926
|
+
|
1927
|
+
case "SaveAs":
|
1928
|
+
webViewerSave();
|
1929
|
+
break;
|
1782
1930
|
}
|
1783
1931
|
}
|
1784
1932
|
|
@@ -1886,7 +2034,7 @@ let webViewerFileInputChange, webViewerOpenFile;
|
|
1886
2034
|
|
1887
2035
|
const file = evt.fileInput.files[0];
|
1888
2036
|
|
1889
|
-
if (!
|
2037
|
+
if (!_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
|
1890
2038
|
let url = URL.createObjectURL(file);
|
1891
2039
|
|
1892
2040
|
if (file.name) {
|
@@ -1930,8 +2078,24 @@ function webViewerPrint() {
|
|
1930
2078
|
window.print();
|
1931
2079
|
}
|
1932
2080
|
|
2081
|
+
function webViewerDownloadOrSave(sourceEventType) {
|
2082
|
+
if (PDFViewerApplication.pdfDocument && PDFViewerApplication.pdfDocument.annotationStorage.size > 0) {
|
2083
|
+
PDFViewerApplication.save({
|
2084
|
+
sourceEventType
|
2085
|
+
});
|
2086
|
+
} else {
|
2087
|
+
PDFViewerApplication.download({
|
2088
|
+
sourceEventType
|
2089
|
+
});
|
2090
|
+
}
|
2091
|
+
}
|
2092
|
+
|
1933
2093
|
function webViewerDownload() {
|
1934
|
-
|
2094
|
+
webViewerDownloadOrSave("download");
|
2095
|
+
}
|
2096
|
+
|
2097
|
+
function webViewerSave() {
|
2098
|
+
webViewerDownloadOrSave("save");
|
1935
2099
|
}
|
1936
2100
|
|
1937
2101
|
function webViewerFirstPage() {
|
@@ -1990,6 +2154,10 @@ function webViewerRotateCcw() {
|
|
1990
2154
|
PDFViewerApplication.rotatePages(-90);
|
1991
2155
|
}
|
1992
2156
|
|
2157
|
+
function webViewerOptionalContentConfig(evt) {
|
2158
|
+
PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise;
|
2159
|
+
}
|
2160
|
+
|
1993
2161
|
function webViewerSwitchScrollMode(evt) {
|
1994
2162
|
PDFViewerApplication.pdfViewer.scrollMode = evt.mode;
|
1995
2163
|
}
|
@@ -2037,13 +2205,15 @@ function webViewerUpdateFindMatchesCount({
|
|
2037
2205
|
function webViewerUpdateFindControlState({
|
2038
2206
|
state,
|
2039
2207
|
previous,
|
2040
|
-
matchesCount
|
2208
|
+
matchesCount,
|
2209
|
+
rawQuery
|
2041
2210
|
}) {
|
2042
2211
|
if (PDFViewerApplication.supportsIntegratedFind) {
|
2043
2212
|
PDFViewerApplication.externalServices.updateFindControlState({
|
2044
2213
|
result: state,
|
2045
2214
|
findPrevious: previous,
|
2046
|
-
matchesCount
|
2215
|
+
matchesCount,
|
2216
|
+
rawQuery
|
2047
2217
|
});
|
2048
2218
|
} else {
|
2049
2219
|
PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount);
|
@@ -2115,13 +2285,23 @@ function webViewerWheel(evt) {
|
|
2115
2285
|
}
|
2116
2286
|
|
2117
2287
|
const previousScale = pdfViewer.currentScale;
|
2118
|
-
const delta = (0, _ui_utils.
|
2119
|
-
|
2120
|
-
|
2288
|
+
const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt);
|
2289
|
+
let ticks = 0;
|
2290
|
+
|
2291
|
+
if (evt.deltaMode === WheelEvent.DOM_DELTA_LINE || evt.deltaMode === WheelEvent.DOM_DELTA_PAGE) {
|
2292
|
+
if (Math.abs(delta) >= 1) {
|
2293
|
+
ticks = Math.sign(delta);
|
2294
|
+
} else {
|
2295
|
+
ticks = PDFViewerApplication.accumulateWheelTicks(delta);
|
2296
|
+
}
|
2297
|
+
} else {
|
2298
|
+
const PIXELS_PER_LINE_SCALE = 30;
|
2299
|
+
ticks = PDFViewerApplication.accumulateWheelTicks(delta / PIXELS_PER_LINE_SCALE);
|
2300
|
+
}
|
2121
2301
|
|
2122
2302
|
if (ticks < 0) {
|
2123
2303
|
PDFViewerApplication.zoomOut(-ticks);
|
2124
|
-
} else {
|
2304
|
+
} else if (ticks > 0) {
|
2125
2305
|
PDFViewerApplication.zoomIn(ticks);
|
2126
2306
|
}
|
2127
2307
|
|
@@ -2140,7 +2320,17 @@ function webViewerWheel(evt) {
|
|
2140
2320
|
}
|
2141
2321
|
}
|
2142
2322
|
|
2323
|
+
function webViewerTouchStart(evt) {
|
2324
|
+
if (evt.touches.length > 1) {
|
2325
|
+
evt.preventDefault();
|
2326
|
+
}
|
2327
|
+
}
|
2328
|
+
|
2143
2329
|
function webViewerClick(evt) {
|
2330
|
+
if (PDFViewerApplication.triggerDelayedFallback && PDFViewerApplication.pdfViewer.containsElement(evt.target)) {
|
2331
|
+
PDFViewerApplication.triggerDelayedFallback();
|
2332
|
+
}
|
2333
|
+
|
2144
2334
|
if (!PDFViewerApplication.secondaryToolbar.isOpen) {
|
2145
2335
|
return;
|
2146
2336
|
}
|
@@ -2152,6 +2342,14 @@ function webViewerClick(evt) {
|
|
2152
2342
|
}
|
2153
2343
|
}
|
2154
2344
|
|
2345
|
+
function webViewerKeyUp(evt) {
|
2346
|
+
if (evt.keyCode === 9) {
|
2347
|
+
if (PDFViewerApplication.triggerDelayedFallback) {
|
2348
|
+
PDFViewerApplication.triggerDelayedFallback();
|
2349
|
+
}
|
2350
|
+
}
|
2351
|
+
}
|
2352
|
+
|
2155
2353
|
function webViewerKeyDown(evt) {
|
2156
2354
|
if (PDFViewerApplication.overlayManager.active) {
|
2157
2355
|
return;
|
@@ -2460,6 +2658,12 @@ function webViewerKeyDown(evt) {
|
|
2460
2658
|
}
|
2461
2659
|
}
|
2462
2660
|
|
2661
|
+
function beforeUnload(evt) {
|
2662
|
+
evt.preventDefault();
|
2663
|
+
evt.returnValue = "";
|
2664
|
+
return false;
|
2665
|
+
}
|
2666
|
+
|
2463
2667
|
function apiPageLayoutToSpreadMode(layout) {
|
2464
2668
|
switch (layout) {
|
2465
2669
|
case "SinglePage":
|
@@ -2493,6 +2697,7 @@ function apiPageModeToSidebarView(mode) {
|
|
2493
2697
|
return _pdf_sidebar.SidebarView.ATTACHMENTS;
|
2494
2698
|
|
2495
2699
|
case "UseOC":
|
2700
|
+
return _pdf_sidebar.SidebarView.LAYERS;
|
2496
2701
|
}
|
2497
2702
|
|
2498
2703
|
return _pdf_sidebar.SidebarView.NONE;
|
package/lib/web/app_options.js
CHANGED
@@ -48,11 +48,6 @@ const defaultOptions = {
|
|
48
48
|
value: "",
|
49
49
|
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
|
50
50
|
},
|
51
|
-
disableCreateObjectURL: {
|
52
|
-
value: false,
|
53
|
-
compatibility: _viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL,
|
54
|
-
kind: OptionKind.VIEWER
|
55
|
-
},
|
56
51
|
disableHistory: {
|
57
52
|
value: false,
|
58
53
|
kind: OptionKind.VIEWER
|
@@ -111,7 +106,7 @@ const defaultOptions = {
|
|
111
106
|
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
|
112
107
|
},
|
113
108
|
renderInteractiveForms: {
|
114
|
-
value:
|
109
|
+
value: true,
|
115
110
|
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
|
116
111
|
},
|
117
112
|
sidebarViewOnLoad: {
|
@@ -0,0 +1,100 @@
|
|
1
|
+
/**
|
2
|
+
* @licstart The following is the entire license notice for the
|
3
|
+
* Javascript code in this page
|
4
|
+
*
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
|
+
*
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
* you may not use this file except in compliance with the License.
|
9
|
+
* You may obtain a copy of the License at
|
10
|
+
*
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
*
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
* See the License for the specific language governing permissions and
|
17
|
+
* limitations under the License.
|
18
|
+
*
|
19
|
+
* @licend The above is the entire license notice for the
|
20
|
+
* Javascript code in this page
|
21
|
+
*/
|
22
|
+
"use strict";
|
23
|
+
|
24
|
+
Object.defineProperty(exports, "__esModule", {
|
25
|
+
value: true
|
26
|
+
});
|
27
|
+
exports.BaseTreeViewer = void 0;
|
28
|
+
|
29
|
+
var _pdf = require("../pdf");
|
30
|
+
|
31
|
+
class BaseTreeViewer {
|
32
|
+
constructor(options) {
|
33
|
+
if (this.constructor === BaseTreeViewer) {
|
34
|
+
throw new Error("Cannot initialize BaseTreeViewer.");
|
35
|
+
}
|
36
|
+
|
37
|
+
this.container = options.container;
|
38
|
+
this.eventBus = options.eventBus;
|
39
|
+
this.reset();
|
40
|
+
}
|
41
|
+
|
42
|
+
reset() {
|
43
|
+
this._lastToggleIsShow = true;
|
44
|
+
this.container.textContent = "";
|
45
|
+
this.container.classList.remove("treeWithDeepNesting");
|
46
|
+
}
|
47
|
+
|
48
|
+
_dispatchEvent(count) {
|
49
|
+
throw new Error("Not implemented: _dispatchEvent");
|
50
|
+
}
|
51
|
+
|
52
|
+
_bindLink(element, params) {
|
53
|
+
throw new Error("Not implemented: _bindLink");
|
54
|
+
}
|
55
|
+
|
56
|
+
_normalizeTextContent(str) {
|
57
|
+
return (0, _pdf.removeNullCharacters)(str) || "\u2013";
|
58
|
+
}
|
59
|
+
|
60
|
+
_addToggleButton(div, hidden = false) {
|
61
|
+
const toggler = document.createElement("div");
|
62
|
+
toggler.className = "treeItemToggler";
|
63
|
+
|
64
|
+
if (hidden) {
|
65
|
+
toggler.classList.add("treeItemsHidden");
|
66
|
+
}
|
67
|
+
|
68
|
+
toggler.onclick = evt => {
|
69
|
+
evt.stopPropagation();
|
70
|
+
toggler.classList.toggle("treeItemsHidden");
|
71
|
+
|
72
|
+
if (evt.shiftKey) {
|
73
|
+
const shouldShowAll = !toggler.classList.contains("treeItemsHidden");
|
74
|
+
|
75
|
+
this._toggleTreeItem(div, shouldShowAll);
|
76
|
+
}
|
77
|
+
};
|
78
|
+
|
79
|
+
div.insertBefore(toggler, div.firstChild);
|
80
|
+
}
|
81
|
+
|
82
|
+
_toggleTreeItem(root, show = false) {
|
83
|
+
this._lastToggleIsShow = show;
|
84
|
+
|
85
|
+
for (const toggler of root.querySelectorAll(".treeItemToggler")) {
|
86
|
+
toggler.classList.toggle("treeItemsHidden", !show);
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
_toggleAllTreeItems() {
|
91
|
+
this._toggleTreeItem(this.container, !this._lastToggleIsShow);
|
92
|
+
}
|
93
|
+
|
94
|
+
render(params) {
|
95
|
+
throw new Error("Not implemented: render");
|
96
|
+
}
|
97
|
+
|
98
|
+
}
|
99
|
+
|
100
|
+
exports.BaseTreeViewer = BaseTreeViewer;
|