1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-24 09:08:07 +02:00

[Annotation] Add a div containing the text of a FreeText annotation (bug 1780375)

An annotation doesn't have to be in the text flow, hence it's likely a bad idea
to insert its text in the text layer. But the text must be visible from a screen
reader point of view so it must somewhere in the DOM.
So with this patch, the text from a FreeText annotation is extracted and added in
a div in its HTML counterpart, and with the patch #15237 the text should be visible
and positioned relatively to the text flow.
This commit is contained in:
Calixte Denizet 2022-08-03 12:03:49 +02:00
parent 159f853e06
commit 31155740c3
7 changed files with 178 additions and 20 deletions

View file

@ -48,3 +48,13 @@
margin: 0;
padding: 0;
}
.annotationLayer .annotationTextContent {
position: absolute;
width: 100%;
height: 100%;
opacity: 0.4;
background-color: transparent;
color: red;
font-size: 10px;
}

View file

@ -4101,6 +4101,35 @@ describe("annotation", function () {
OPS.endAnnotation,
]);
});
it("should extract the text from a FreeText annotation", async function () {
partialEvaluator.xref = new XRefMock();
const task = new WorkerTask("test FreeText text extraction");
const freetextAnnotation = (
await AnnotationFactory.printNewAnnotations(partialEvaluator, task, [
{
annotationType: AnnotationEditorType.FREETEXT,
rect: [12, 34, 56, 78],
rotation: 0,
fontSize: 10,
color: [0, 0, 0],
value: "Hello PDF.js\nWorld !",
},
])
)[0];
await freetextAnnotation.extractTextContent(partialEvaluator, task, [
-Infinity,
-Infinity,
Infinity,
Infinity,
]);
expect(freetextAnnotation.data.textContent).toEqual([
"Hello PDF.js",
"World !",
]);
});
});
describe("InkAnnotation", function () {