PDFTron:在 PDF 表单中查找日期字段的正确方法是什么
PDFTron: What is the proper way to find date fields in a PDF form
[PdfTron 5.2]
我有一个带有文本和日期字段的 PDF 表单。我想找到日期字段。
我可以使用 getActions() 获取该字段的操作。
field.getActions()
returns
{"F":[{"yc":"JavaScript","Gt":"AFDate_FormatEx(\"dd.mm.yyyy\");"}],
"K":[{"yc":"JavaScript","Gt":"...);","ey":null}]}
如您所见,日期在 actions.F[0].Gt
中。但是检查 actions.F[0].Gt
for "AFDate" 似乎是错误的,那太低级了。
是否有更好的 API 函数来找出我有一个日期字段?
谢谢。
你是对的。 Gt 属性 被混淆和缩小,这是易变的,不打算使用。如果您需要 API,您应该参考我们的 documentation。除了少数几个(下面将使用其中一个),那里应该有所有东西,但如果您确实需要帮助,请随时与我们联系!
遗憾的是,目前 API 无法获取该类型。根据我有限的理解,字段的 "type" 是由附加的操作决定的,而不仅仅是特定的类型或标志。这表明所有字段都只是具有特殊格式化操作的文本字段,使其看起来像日期或数字字段。
在这种情况下,您必须检查格式化操作 (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 这就足够了。
[PdfTron 5.2] 我有一个带有文本和日期字段的 PDF 表单。我想找到日期字段。 我可以使用 getActions() 获取该字段的操作。
field.getActions()
returns
{"F":[{"yc":"JavaScript","Gt":"AFDate_FormatEx(\"dd.mm.yyyy\");"}],
"K":[{"yc":"JavaScript","Gt":"...);","ey":null}]}
如您所见,日期在 actions.F[0].Gt
中。但是检查 actions.F[0].Gt
for "AFDate" 似乎是错误的,那太低级了。
是否有更好的 API 函数来找出我有一个日期字段?
谢谢。
你是对的。 Gt 属性 被混淆和缩小,这是易变的,不打算使用。如果您需要 API,您应该参考我们的 documentation。除了少数几个(下面将使用其中一个),那里应该有所有东西,但如果您确实需要帮助,请随时与我们联系!
遗憾的是,目前 API 无法获取该类型。根据我有限的理解,字段的 "type" 是由附加的操作决定的,而不仅仅是特定的类型或标志。这表明所有字段都只是具有特殊格式化操作的文本字段,使其看起来像日期或数字字段。
在这种情况下,您必须检查格式化操作 (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 这就足够了。