在adobe reader中启用使用权限后,无法使用pdf.js获取Dynamic xfa表单字段

时间:2017-03-29 12:18:48

标签: javascript adobe acrobat pdf.js livecycle-designer

我已经使用Livecycle designer创建了一个Dynamic XFA表单。我使用pdf.js来获取表单字段。但是在启用"启用使用权限后#34;到表格形式字段长度为0.我用pdf.js的page.getAnnotations()来获取它。

2 个答案:

答案 0 :(得分:1)

如果表单是静态XFA,则除了XFA字典之外,PDF还包含AcroForm字典,这是非Adobe查看者可以处理静态XFA的方式。他们没有处理XFA,他们阅读AcroForm就好像XFA不存在一样。但是,使用Dynamic XFA时,很可能AcroForm字典中没有表单字段,直到查看器将XFA呈现为PDF ... Acrobat会自动执行此操作,但其他库无法创建PDF DOM XFA DOM无法胜任。我怀疑您的问题与使用权有关,而不是保存文件导致Acrobat擦除XFA的PDF副本。

答案 1 :(得分:0)

简短的回答是 pdf.js 现在不支持 XFA 表单。在此处查看 github 问题:https://github.com/mozilla/pdf.js/issues/2373

如果你想要的只是对表单数据的低级 javascript 访问(这是我的用例),我在这里创建了 pdf.js 的一个分支:https://www.npmjs.com/package/@ckhordiasma/pdfjs-dist 能够使用挂钩到 xfa 树我在源代码中插入了一个 getXFA() 函数。

// filedata: a file blob
const pdfSetup = filedata.arrayBuffer().then(function (buffer) {
    const uint8Array = new Uint8Array(buffer);

    return pdfjs.getDocument({ data: uint8Array }).promise;
  });

const getXFA = pdfSetup.then(function (pdf) {
    return pdf.getXFA();
});

getXFA.then(function(xfa){
    console.log(xfa);
});