1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-22 16:18:08 +02:00

JS - Add a function in api to get the fields ids in AcroForm::CO

This commit is contained in:
Calixte Denizet 2020-10-16 17:15:58 +02:00
parent ff2631493e
commit c30a3a94f0
4 changed files with 48 additions and 0 deletions

View file

@ -37,6 +37,7 @@ import {
Dict,
isDict,
isName,
isRef,
isStream,
Ref,
} from "./primitives.js";
@ -1012,6 +1013,21 @@ class PDFDocument {
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 };

View file

@ -520,6 +520,10 @@ class WorkerMessageHandler {
return pdfManager.ensureDoc("fieldObjects");
});
handler.on("GetCalculationOrderIds", function (data) {
return pdfManager.ensureDoc("calculationOrderIds");
});
handler.on("SaveDocument", function ({
numPages,
annotationStorage,

View file

@ -885,6 +885,15 @@ class PDFDocumentProxy {
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);
}
getCalculationOrderIds() {
return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null);
}
getDestinations() {
return this.messageHandler.sendWithPromise("GetDestinations", null);
}