mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-20 15:18:08 +02:00
Merge pull request #15246 from Snuffleupagus/thumbnail-setImage-improvements
[api-minor] Improve `thumbnail` handling in documents that contain interactive forms
This commit is contained in:
commit
b8aa9c6221
7 changed files with 185 additions and 101 deletions
|
@ -99,7 +99,10 @@ const MAX_CANVAS_PIXELS = compatibilityParams.maxCanvasPixels || 16777216;
|
|||
class PDFPageView {
|
||||
#annotationMode = AnnotationMode.ENABLE_FORMS;
|
||||
|
||||
#useThumbnailCanvas = true;
|
||||
#useThumbnailCanvas = {
|
||||
initialOptionalContent: true,
|
||||
regularAnnotations: true,
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {PDFPageViewOptions} options
|
||||
|
@ -190,14 +193,15 @@ class PDFPageView {
|
|||
const { optionalContentConfigPromise } = options;
|
||||
if (optionalContentConfigPromise) {
|
||||
// Ensure that the thumbnails always display the *initial* document
|
||||
// state.
|
||||
// state, for documents with optional content.
|
||||
optionalContentConfigPromise.then(optionalContentConfig => {
|
||||
if (
|
||||
optionalContentConfigPromise !== this._optionalContentConfigPromise
|
||||
) {
|
||||
return;
|
||||
}
|
||||
this.#useThumbnailCanvas = optionalContentConfig.hasInitialVisibility;
|
||||
this.#useThumbnailCanvas.initialOptionalContent =
|
||||
optionalContentConfig.hasInitialVisibility;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -408,14 +412,16 @@ class PDFPageView {
|
|||
if (optionalContentConfigPromise instanceof Promise) {
|
||||
this._optionalContentConfigPromise = optionalContentConfigPromise;
|
||||
|
||||
// Ensure that the thumbnails always display the *initial* document state.
|
||||
// Ensure that the thumbnails always display the *initial* document state,
|
||||
// for documents with optional content.
|
||||
optionalContentConfigPromise.then(optionalContentConfig => {
|
||||
if (
|
||||
optionalContentConfigPromise !== this._optionalContentConfigPromise
|
||||
) {
|
||||
return;
|
||||
}
|
||||
this.#useThumbnailCanvas = optionalContentConfig.hasInitialVisibility;
|
||||
this.#useThumbnailCanvas.initialOptionalContent =
|
||||
optionalContentConfig.hasInitialVisibility;
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -772,6 +778,10 @@ class PDFPageView {
|
|||
}
|
||||
this._resetZoomLayer(/* removeFromDOM = */ true);
|
||||
|
||||
// Ensure that the thumbnails won't become partially (or fully) blank,
|
||||
// for documents that contain interactive form elements.
|
||||
this.#useThumbnailCanvas.regularAnnotations = !paintTask.separateAnnots;
|
||||
|
||||
this.eventBus.dispatch("pagerendered", {
|
||||
source: this,
|
||||
pageNumber: this.id,
|
||||
|
@ -888,6 +898,9 @@ class PDFPageView {
|
|||
cancel() {
|
||||
renderTask.cancel();
|
||||
},
|
||||
get separateAnnots() {
|
||||
return renderTask.separateAnnots;
|
||||
},
|
||||
};
|
||||
|
||||
const viewport = this.viewport;
|
||||
|
@ -1029,6 +1042,9 @@ class PDFPageView {
|
|||
cancel() {
|
||||
cancelled = true;
|
||||
},
|
||||
get separateAnnots() {
|
||||
return false;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1050,7 +1066,9 @@ class PDFPageView {
|
|||
* @ignore
|
||||
*/
|
||||
get thumbnailCanvas() {
|
||||
return this.#useThumbnailCanvas ? this.canvas : null;
|
||||
const { initialOptionalContent, regularAnnotations } =
|
||||
this.#useThumbnailCanvas;
|
||||
return initialOptionalContent && regularAnnotations ? this.canvas : null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue