mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
Merge pull request #12758 from Snuffleupagus/AnnotationStorage-rm-event
Run `AnnotationStorage.resetModified` when destroying the `PDFDocumentLoadingTask`/`PDFDocumentProxy`
This commit is contained in:
commit
1c8ead133a
2 changed files with 44 additions and 20 deletions
48
web/app.js
48
web/app.js
|
@ -1061,6 +1061,14 @@ const PDFViewerApplication = {
|
|||
});
|
||||
},
|
||||
|
||||
downloadOrSave(options) {
|
||||
if (this.pdfDocument?.annotationStorage.size > 0) {
|
||||
this.save(options);
|
||||
} else {
|
||||
this.download(options);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* For PDF documents that contain e.g. forms and javaScript, we should only
|
||||
* trigger the fallback bar once the user has interacted with the page.
|
||||
|
@ -1280,14 +1288,6 @@ const PDFViewerApplication = {
|
|||
this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);
|
||||
this.pdfDocumentProperties.setDocument(pdfDocument, this.url);
|
||||
|
||||
const annotationStorage = pdfDocument.annotationStorage;
|
||||
annotationStorage.onSetModified = function () {
|
||||
window.addEventListener("beforeunload", beforeUnload);
|
||||
};
|
||||
annotationStorage.onResetModified = function () {
|
||||
window.removeEventListener("beforeunload", beforeUnload);
|
||||
};
|
||||
|
||||
const pdfViewer = this.pdfViewer;
|
||||
pdfViewer.setDocument(pdfDocument);
|
||||
const { firstPagePromise, onePageRendered, pagesPromise } = pdfViewer;
|
||||
|
@ -1315,6 +1315,7 @@ const PDFViewerApplication = {
|
|||
|
||||
firstPagePromise.then(pdfPage => {
|
||||
this.loadingBar.setWidth(this.appConfig.viewerContainer);
|
||||
this._initializeAnnotationStorageCallbacks(pdfDocument);
|
||||
|
||||
Promise.all([
|
||||
animationStarted,
|
||||
|
@ -1882,6 +1883,23 @@ const PDFViewerApplication = {
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_initializeAnnotationStorageCallbacks(pdfDocument) {
|
||||
if (pdfDocument !== this.pdfDocument) {
|
||||
return;
|
||||
}
|
||||
const { annotationStorage } = pdfDocument;
|
||||
|
||||
annotationStorage.onSetModified = function () {
|
||||
window.addEventListener("beforeunload", beforeUnload);
|
||||
};
|
||||
annotationStorage.onResetModified = function () {
|
||||
window.removeEventListener("beforeunload", beforeUnload);
|
||||
};
|
||||
},
|
||||
|
||||
setInitialView(
|
||||
storedHash,
|
||||
{ rotation, sidebarView, scrollMode, spreadMode } = {}
|
||||
|
@ -2743,21 +2761,11 @@ function webViewerPresentationMode() {
|
|||
function webViewerPrint() {
|
||||
PDFViewerApplication.triggerPrinting();
|
||||
}
|
||||
function webViewerDownloadOrSave(sourceEventType) {
|
||||
if (
|
||||
PDFViewerApplication.pdfDocument &&
|
||||
PDFViewerApplication.pdfDocument.annotationStorage.size > 0
|
||||
) {
|
||||
PDFViewerApplication.save({ sourceEventType });
|
||||
} else {
|
||||
PDFViewerApplication.download({ sourceEventType });
|
||||
}
|
||||
}
|
||||
function webViewerDownload() {
|
||||
webViewerDownloadOrSave("download");
|
||||
PDFViewerApplication.downloadOrSave({ sourceEventType: "download" });
|
||||
}
|
||||
function webViewerSave() {
|
||||
webViewerDownloadOrSave("save");
|
||||
PDFViewerApplication.downloadOrSave({ sourceEventType: "save" });
|
||||
}
|
||||
function webViewerFirstPage() {
|
||||
if (PDFViewerApplication.pdfDocument) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue