Merge pull request #17034 from calixteman/bug1855157
[Editor] Don't try to add data to the struct tree when there is no accessibilityData (bug 1855157)
This commit is contained in:
commit
3f7060e777
@ -313,11 +313,16 @@ class StructTreeRoot {
|
|||||||
for (const [pageIndex, elements] of newAnnotationsByPage) {
|
for (const [pageIndex, elements] of newAnnotationsByPage) {
|
||||||
const { ref: pageRef } = await pdfManager.getPage(pageIndex);
|
const { ref: pageRef } = await pdfManager.getPage(pageIndex);
|
||||||
for (const {
|
for (const {
|
||||||
accessibilityData: { type, title, lang, alt, expanded, actualText },
|
accessibilityData,
|
||||||
ref,
|
ref,
|
||||||
parentTreeId,
|
parentTreeId,
|
||||||
structTreeParent,
|
structTreeParent,
|
||||||
} of elements) {
|
} of elements) {
|
||||||
|
if (!accessibilityData?.type) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const { type, title, lang, alt, expanded, actualText } =
|
||||||
|
accessibilityData;
|
||||||
nextKey = Math.max(nextKey, parentTreeId);
|
nextKey = Math.max(nextKey, parentTreeId);
|
||||||
|
|
||||||
const tagRef = xref.getNewTemporaryRef();
|
const tagRef = xref.getNewTemporaryRef();
|
||||||
|
@ -2405,6 +2405,76 @@ describe("api", function () {
|
|||||||
await loadingTask.destroy();
|
await loadingTask.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("write a text and a stamp annotation but no alt text (bug 1855157)", async function () {
|
||||||
|
if (isNodeJS) {
|
||||||
|
pending("Cannot create a bitmap from Node.js.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const TEST_IMAGES_PATH = "../images/";
|
||||||
|
const filename = "firefox_logo.png";
|
||||||
|
const path = new URL(TEST_IMAGES_PATH + filename, window.location).href;
|
||||||
|
|
||||||
|
const response = await fetch(path);
|
||||||
|
const blob = await response.blob();
|
||||||
|
const bitmap = await createImageBitmap(blob);
|
||||||
|
|
||||||
|
let loadingTask = getDocument(buildGetDocumentParams("empty.pdf"));
|
||||||
|
let pdfDoc = await loadingTask.promise;
|
||||||
|
pdfDoc.annotationStorage.setValue("pdfjs_internal_editor_0", {
|
||||||
|
annotationType: AnnotationEditorType.STAMP,
|
||||||
|
rect: [128, 400, 148, 420],
|
||||||
|
rotation: 0,
|
||||||
|
bitmap,
|
||||||
|
bitmapId: "im1",
|
||||||
|
pageIndex: 0,
|
||||||
|
structTreeParentId: null,
|
||||||
|
accessibilityData: {
|
||||||
|
type: "Figure",
|
||||||
|
alt: "Hello World",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
pdfDoc.annotationStorage.setValue("pdfjs_internal_editor_1", {
|
||||||
|
annotationType: AnnotationEditorType.FREETEXT,
|
||||||
|
color: [0, 0, 0],
|
||||||
|
fontSize: 10,
|
||||||
|
value: "Hello World",
|
||||||
|
pageIndex: 0,
|
||||||
|
rect: [
|
||||||
|
133.2444863336475, 653.5583423367227, 191.03166882427766,
|
||||||
|
673.363146394756,
|
||||||
|
],
|
||||||
|
rotation: 0,
|
||||||
|
structTreeParentId: null,
|
||||||
|
id: null,
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = await pdfDoc.saveDocument();
|
||||||
|
await loadingTask.destroy();
|
||||||
|
|
||||||
|
loadingTask = getDocument(data);
|
||||||
|
pdfDoc = await loadingTask.promise;
|
||||||
|
const page = await pdfDoc.getPage(1);
|
||||||
|
const tree = await page.getStructTree();
|
||||||
|
|
||||||
|
expect(tree).toEqual({
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
role: "Figure",
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
type: "annotation",
|
||||||
|
id: "pdfjs_internal_id_18R",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
alt: "Hello World",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
role: "Root",
|
||||||
|
});
|
||||||
|
|
||||||
|
await loadingTask.destroy();
|
||||||
|
});
|
||||||
|
|
||||||
describe("Cross-origin", function () {
|
describe("Cross-origin", function () {
|
||||||
let loadingTask;
|
let loadingTask;
|
||||||
function _checkCanLoad(expectSuccess, filename, options) {
|
function _checkCanLoad(expectSuccess, filename, options) {
|
||||||
|
Loading…
Reference in New Issue
Block a user