mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-25 09:38:06 +02:00
XFA - Add a layer to display XFA forms (#13069)
- add an option to enable XFA rendering if any; - for now, let the canvas layer: it could be useful to implement XFAF forms (embedded pdf in xml stream for the background and xfa form for the foreground); - ui elements in template DOM are pretty close to their html counterpart so we generate a fake html DOM from template one: - it makes easier to translate template properties to html ones; - it makes faster the creation of the html element in the main thread.
This commit is contained in:
parent
a164941351
commit
24e598a895
20 changed files with 760 additions and 27 deletions
|
@ -188,14 +188,15 @@ class WorkerMessageHandler {
|
|||
await pdfManager.ensureDoc("checkFirstPage");
|
||||
}
|
||||
|
||||
const [numPages, fingerprint] = await Promise.all([
|
||||
const [numPages, fingerprint, isPureXfa] = await Promise.all([
|
||||
pdfManager.ensureDoc("numPages"),
|
||||
pdfManager.ensureDoc("fingerprint"),
|
||||
pdfManager.ensureDoc("isPureXfa"),
|
||||
]);
|
||||
return { numPages, fingerprint };
|
||||
return { numPages, fingerprint, isPureXfa };
|
||||
}
|
||||
|
||||
function getPdfManager(data, evaluatorOptions) {
|
||||
function getPdfManager(data, evaluatorOptions, enableXfa) {
|
||||
var pdfManagerCapability = createPromiseCapability();
|
||||
let newPdfManager;
|
||||
|
||||
|
@ -207,6 +208,7 @@ class WorkerMessageHandler {
|
|||
source.data,
|
||||
source.password,
|
||||
evaluatorOptions,
|
||||
enableXfa,
|
||||
docBaseUrl
|
||||
);
|
||||
pdfManagerCapability.resolve(newPdfManager);
|
||||
|
@ -246,6 +248,7 @@ class WorkerMessageHandler {
|
|||
rangeChunkSize: source.rangeChunkSize,
|
||||
},
|
||||
evaluatorOptions,
|
||||
enableXfa,
|
||||
docBaseUrl
|
||||
);
|
||||
// There may be a chance that `newPdfManager` is not initialized for
|
||||
|
@ -277,6 +280,7 @@ class WorkerMessageHandler {
|
|||
pdfFile,
|
||||
source.password,
|
||||
evaluatorOptions,
|
||||
enableXfa,
|
||||
docBaseUrl
|
||||
);
|
||||
pdfManagerCapability.resolve(newPdfManager);
|
||||
|
@ -399,7 +403,7 @@ class WorkerMessageHandler {
|
|||
fontExtraProperties: data.fontExtraProperties,
|
||||
};
|
||||
|
||||
getPdfManager(data, evaluatorOptions)
|
||||
getPdfManager(data, evaluatorOptions, data.enableXfa)
|
||||
.then(function (newPdfManager) {
|
||||
if (terminated) {
|
||||
// We were in a process of setting up the manager, but it got
|
||||
|
@ -487,6 +491,16 @@ class WorkerMessageHandler {
|
|||
});
|
||||
});
|
||||
|
||||
handler.on("GetPageXfa", function wphSetupGetXfa({ pageIndex }) {
|
||||
return pdfManager.getPage(pageIndex).then(function (page) {
|
||||
return pdfManager.ensure(page, "xfaData");
|
||||
});
|
||||
});
|
||||
|
||||
handler.on("GetIsPureXfa", function wphSetupGetIsPureXfa(data) {
|
||||
return pdfManager.ensureDoc("isPureXfa");
|
||||
});
|
||||
|
||||
handler.on("GetOutline", function wphSetupGetOutline(data) {
|
||||
return pdfManager.ensureCatalog("documentOutline");
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue