JS - Add a function in api to get the fields ids in AcroForm::CO
This commit is contained in:
parent
ff2631493e
commit
c30a3a94f0
@ -37,6 +37,7 @@ import {
|
|||||||
Dict,
|
Dict,
|
||||||
isDict,
|
isDict,
|
||||||
isName,
|
isName,
|
||||||
|
isRef,
|
||||||
isStream,
|
isStream,
|
||||||
Ref,
|
Ref,
|
||||||
} from "./primitives.js";
|
} from "./primitives.js";
|
||||||
@ -1012,6 +1013,21 @@ class PDFDocument {
|
|||||||
Promise.all(allPromises).then(() => allFields)
|
Promise.all(allPromises).then(() => allFields)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get calculationOrderIds() {
|
||||||
|
const acroForm = this.catalog.acroForm;
|
||||||
|
if (!acroForm || !acroForm.has("CO")) {
|
||||||
|
return shadow(this, "calculationOrderIds", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
const calculationOrder = acroForm.get("CO");
|
||||||
|
if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {
|
||||||
|
return shadow(this, "calculationOrderIds", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ids = calculationOrder.filter(isRef).map(ref => ref.toString());
|
||||||
|
return shadow(this, "calculationOrderIds", ids);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export { Page, PDFDocument };
|
export { Page, PDFDocument };
|
||||||
|
@ -520,6 +520,10 @@ class WorkerMessageHandler {
|
|||||||
return pdfManager.ensureDoc("fieldObjects");
|
return pdfManager.ensureDoc("fieldObjects");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
handler.on("GetCalculationOrderIds", function (data) {
|
||||||
|
return pdfManager.ensureDoc("calculationOrderIds");
|
||||||
|
});
|
||||||
|
|
||||||
handler.on("SaveDocument", function ({
|
handler.on("SaveDocument", function ({
|
||||||
numPages,
|
numPages,
|
||||||
annotationStorage,
|
annotationStorage,
|
||||||
|
@ -885,6 +885,15 @@ class PDFDocumentProxy {
|
|||||||
getFieldObjects() {
|
getFieldObjects() {
|
||||||
return this._transport.getFieldObjects();
|
return this._transport.getFieldObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {Promise<Array<string> | null>} A promise that is resolved with an
|
||||||
|
* {Array<string>} containing IDs of annotations that have a calculation
|
||||||
|
* action, or `null` when no such annotations are present in the PDF file.
|
||||||
|
*/
|
||||||
|
getCalculationOrderIds() {
|
||||||
|
return this._transport.getCalculationOrderIds();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2562,6 +2571,10 @@ class WorkerTransport {
|
|||||||
return this.messageHandler.sendWithPromise("GetFieldObjects", null);
|
return this.messageHandler.sendWithPromise("GetFieldObjects", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getCalculationOrderIds() {
|
||||||
|
return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null);
|
||||||
|
}
|
||||||
|
|
||||||
getDestinations() {
|
getDestinations() {
|
||||||
return this.messageHandler.sendWithPromise("GetDestinations", null);
|
return this.messageHandler.sendWithPromise("GetDestinations", null);
|
||||||
}
|
}
|
||||||
|
@ -159,5 +159,20 @@ describe("document", function () {
|
|||||||
hasFields: true,
|
hasFields: true,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should get calculation order array or null", function () {
|
||||||
|
const acroForm = new Dict();
|
||||||
|
|
||||||
|
let pdfDocument = getDocument(acroForm);
|
||||||
|
expect(pdfDocument.calculationOrderIds).toEqual(null);
|
||||||
|
|
||||||
|
acroForm.set("CO", [Ref.get(1, 0), Ref.get(2, 0), Ref.get(3, 0)]);
|
||||||
|
pdfDocument = getDocument(acroForm);
|
||||||
|
expect(pdfDocument.calculationOrderIds).toEqual(["1R", "2R", "3R"]);
|
||||||
|
|
||||||
|
acroForm.set("CO", []);
|
||||||
|
pdfDocument = getDocument(acroForm);
|
||||||
|
expect(pdfDocument.calculationOrderIds).toEqual(null);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user