Merge pull request #15805 from Snuffleupagus/XfaLayerBuilder-render-async
Change the `XfaLayerBuilder.render` method to be asynchronous
This commit is contained in:
commit
6c2f34b6bb
@ -55,9 +55,9 @@ class XfaLayerBuilder {
|
|||||||
* @param {string} intent (default value is 'display')
|
* @param {string} intent (default value is 'display')
|
||||||
* @returns {Promise<Object | void>} A promise that is resolved when rendering
|
* @returns {Promise<Object | void>} A promise that is resolved when rendering
|
||||||
* of the XFA layer is complete. The first rendering will return an object
|
* of the XFA layer is complete. The first rendering will return an object
|
||||||
* with a `textDivs` property that can be used with the TextHighlighter.
|
* with a `textDivs` property that can be used with the TextHighlighter.
|
||||||
*/
|
*/
|
||||||
render(viewport, intent = "display") {
|
async render(viewport, intent = "display") {
|
||||||
if (intent === "print") {
|
if (intent === "print") {
|
||||||
const parameters = {
|
const parameters = {
|
||||||
viewport: viewport.clone({ dontFlip: true }),
|
viewport: viewport.clone({ dontFlip: true }),
|
||||||
@ -73,39 +73,33 @@ class XfaLayerBuilder {
|
|||||||
this.pageDiv.append(div);
|
this.pageDiv.append(div);
|
||||||
parameters.div = div;
|
parameters.div = div;
|
||||||
|
|
||||||
const result = XfaLayer.render(parameters);
|
return XfaLayer.render(parameters);
|
||||||
return Promise.resolve(result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// intent === "display"
|
// intent === "display"
|
||||||
return this.pdfPage
|
const xfaHtml = await this.pdfPage.getXfa();
|
||||||
.getXfa()
|
if (this._cancelled || !xfaHtml) {
|
||||||
.then(xfaHtml => {
|
return { textDivs: [] };
|
||||||
if (this._cancelled || !xfaHtml) {
|
}
|
||||||
return { textDivs: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
const parameters = {
|
const parameters = {
|
||||||
viewport: viewport.clone({ dontFlip: true }),
|
viewport: viewport.clone({ dontFlip: true }),
|
||||||
div: this.div,
|
div: this.div,
|
||||||
xfaHtml,
|
xfaHtml,
|
||||||
annotationStorage: this.annotationStorage,
|
annotationStorage: this.annotationStorage,
|
||||||
linkService: this.linkService,
|
linkService: this.linkService,
|
||||||
intent,
|
intent,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.div) {
|
if (this.div) {
|
||||||
return XfaLayer.update(parameters);
|
return XfaLayer.update(parameters);
|
||||||
}
|
}
|
||||||
// Create an xfa layer div and render the form
|
// Create an xfa layer div and render the form
|
||||||
this.div = document.createElement("div");
|
this.div = document.createElement("div");
|
||||||
this.pageDiv.append(this.div);
|
this.pageDiv.append(this.div);
|
||||||
parameters.div = this.div;
|
parameters.div = this.div;
|
||||||
return XfaLayer.render(parameters);
|
|
||||||
})
|
return XfaLayer.render(parameters);
|
||||||
.catch(error => {
|
|
||||||
console.error(error);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cancel() {
|
cancel() {
|
||||||
|
Loading…
Reference in New Issue
Block a user