【问题标题】:PDFTron: What is the proper way to find date fields in a PDF formPDFTron:在 PDF 表单中查找日期字段的正确方法是什么
【发布时间】:2019-09-10 08:56:46
【问题描述】:

[PdfTron 5.2] 我有一个带有文本和日期字段的 PDF 表单。我想找到日期字段。 我可以通过 getActions() 获取该字段的操作。

field.getActions()

返回

{"F":[{"yc":"JavaScript","Gt":"AFDate_FormatEx(\"dd.mm.yyyy\");"}],
"K":[{"yc":"JavaScript","Gt":"...);","ey":null}]}

如您所见,日期为actions.F[0].Gt。但是检查actions.F[0].Gt 因为“AFDate”似乎是错误的,这太低级了。

是否有更好的 API 函数可以找出我有一个日期字段?

谢谢。

【问题讨论】:

    标签: pdftron


    【解决方案1】:

    你是对的。 Gt 属性被混淆和缩小,它是易变的,不应该被使用。如果您需要 API,请参考我们的documentation。除了少数(其中一个将在下面使用)之外,所有东西都应该在那里可用,但如果您确实需要帮助,请随时与我们联系!

    很遗憾,目前没有 API 可以获取该类型。根据我有限的理解,字段的“类型”由附加的操作决定,而不仅仅是特定的类型或标志。这表明所有字段都只是具有特殊格式操作的文本字段,以使其看起来和感觉像是日期或数字字段。

    在这种情况下,您必须检查格式化操作 (F),因为您已经注意到日期格式化功能 (AFDate_FormatEx)。要从该操作中获取 JavaScript,您应该使用文档中未包含的操作的 javascript 属性。但是,如果您在控制台记录该操作,则可以看到它。

    这是一个例子:

    const dateActionJs = /.+:"AFDate_FormatEx\(.*/;
    
    instance.docViewer.on('annotationsLoaded', () => {
      const annotations = annotManager.getAnnotationsList();
      annotations.forEach(annot => {
        const actions = annot.getField().getActions();
        if (actions.F && actions.F[0] && actions.F[0].javascript && dateActionJs.test(actions.F[0].javascript)) { // F = Format Action
          console.log('Found Date');
        }
      });
    });
    

    如果这有帮助,请告诉我!

    编辑:您可以搜索 AFDate 而不是 AFDate_FormatEx 就足够了。

    【讨论】:

    • 谢谢,就是这样(javascript 属性)。很好的答案。
    • 我刚刚更新了我的回复。您可以搜索 AFDate 而不是 AFDate_FormatEx 也可以。
    猜你喜欢
    • 1970-01-01
    • 2011-12-17
    • 2010-12-28
    • 1970-01-01
    • 2020-09-23
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多