【问题标题】:pdfjs: Fill out a form and get the fieldValuespdfjs:填写表格并获取 fieldValues
【发布时间】:2020-12-27 12:28:54
【问题描述】:

我正在使用 pdfjs 来显示 PDF 表单(acroforms 示例)。如果我填写一些字段,我如何获得这些注释。

我试过了:

pdfPage.getAnnotations().then(function(a) {
for(var i = 0;i < a.length; i++) {
  console.log(a[i].id + ' - ' + a[i].fieldValue);
  } 
});

但我得到的只是空的fieldValues。我想我是从原始 PDF 中获取它们的。如何访问包含新注释的 live 文档?

【问题讨论】:

  • 你应该明白 acrosform 示例在渲染的 pdf 中添加一个带有 html 表单的 html 层;因此,您应该注意使用 html 事件保存已编辑的值,然后生成 acrobat 完全支持的 xfdf 文件;请删除下面的负面评论,以便我可以通过示例改进答案(即使您可以在建议的链接中找到所有内容)

标签: javascript pdf.js


【解决方案1】:
    async getAnnotations() {
    var result = {};                
    var pages = PDFViewerApplication.pdfDocument.numPages;
    for (var i = 1; i <= pages; i++) {
        var page = await PDFViewerApplication.pdfDocument.getPage(i);
        var annotations = await page.getAnnotations();
        for (var j = 0; j < annotations.length; j++) {
            var element = annotations[j];
            // Field Name
            if (result[element.fieldName] == null) {
                result[element.fieldName] = null;
            }
        
                var val = PDFViewerApplication.pdfDocument.annotationStorage.getOrCreateValue(element.id);
                if (element.radioButton) {
                    if (val.value) {
                        result[element.fieldName] = element.buttonValue;
                    }
                } else if (element.checkBox) {
                    result[element.fieldName] = val.value ? "On" : "Off";
                } else {
                    result[element.fieldName] = val.value;
                }                                
        }             
    };              

    return result;
}

【讨论】:

    【解决方案2】:

    您应该将用户写入的值保存在局部变量中

    然后你应该创建一个 xfdf 文件(Adobe 的 xml 文件),查找 Example nere:https://developer.salesforce.com/page/Adobe_XFDF。然后应该将 xfdf 与原始 pdf 合并以生成新的编译 pdf

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      相关资源
      最近更新 更多