diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 35248dced..1eb5f9c5d 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -2585,6 +2585,7 @@ class AnnotationLayer { */ static render(parameters) { const { annotations, div, viewport, accessibilityManager } = parameters; + setLayerDimensions(div, viewport); let zIndex = 0; @@ -2652,7 +2653,6 @@ class AnnotationLayer { } this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap); - setLayerDimensions(div, viewport); } /** @@ -2664,9 +2664,9 @@ class AnnotationLayer { */ static update(parameters) { const { annotationCanvasMap, div, viewport } = parameters; + setLayerDimensions(div, { rotation: viewport.rotation }); this.#setAnnotationCanvasMap(div, annotationCanvasMap); - setLayerDimensions(div, { rotation: viewport.rotation }); div.hidden = false; } diff --git a/test/integration/accessibility_spec.js b/test/integration/accessibility_spec.js index 8ca890aae..0d25586b1 100644 --- a/test/integration/accessibility_spec.js +++ b/test/integration/accessibility_spec.js @@ -106,4 +106,37 @@ describe("accessibility", () => { ); }); }); + + describe("Annotations order", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("fields_order.pdf", ".annotationLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that the text fields are in the visual order", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + const ids = await page.evaluate(() => { + const elements = document.querySelectorAll( + ".annotationLayer .textWidgetAnnotation" + ); + const results = []; + for (const element of elements) { + results.push(element.getAttribute("data-annotation-id")); + } + return results; + }); + + expect(ids) + .withContext(`In ${browserName}`) + .toEqual(["32R", "30R", "31R", "34R", "29R", "33R"]); + }) + ); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 50738a2c2..92a9c74a4 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -560,3 +560,4 @@ !issue15759.pdf !issue15753.pdf !issue15789.pdf +!fields_order.pdf diff --git a/test/pdfs/fields_order.pdf b/test/pdfs/fields_order.pdf new file mode 100755 index 000000000..c3115c788 Binary files /dev/null and b/test/pdfs/fields_order.pdf differ