【问题标题】:Get form field format itext7获取表单字段格式itext7
【发布时间】:2019-01-30 12:17:23
【问题描述】:

我正在从 PDF 文档中获取表单域,但我没有看到任何获取表单域格式的方法 ForExample 我的文档中有多个文本表单域,包括数字域、日期域、百分比域。 有没有办法在itext7中获取字段格式类型

【问题讨论】:

  • 格式是什么意思?您是指写入字段值的格式吗?那你是不是可以获取值并手动检查呢?
  • Adobe Writer 中有一个选项可以将文本字段格式设置为日期、数字、百分比等。我想在 itext7 中获取该字段格式。例如:如果字段格式设置为数字,则最终应用程序将只允许字段中包含数字字符。
  • 这些格式选项不是即时的 pdf 表单字段属性,它们仅由 javascript 事件侦听器强制执行(在具有 javascript 功能的 pdf 查看器上,未通过配置禁用)。因此,要确定一个字段是否设置了特定的格式选项,您必须分析与之关联的 javascript。
  • @mkl。好的,但我没有看到任何关于在 PDFAcroForm 中获取 javascript 方法的方法,而在 ItextSharp5 之前,此方法可用

标签: itext7


【解决方案1】:

@Uladzimir Asipchuk /TU 字典包含工具提示值。格式值包含在 PDF 结构中的 /AA >> /K 字典中。但是,经过一些尝试并通过 Pre-Flight 探索 PDF 结构后,我已经提取了 JS 方法。以下代码 sn -p 给出了相关的 JSMethod(如果有):

    PdfDictionary additionalActions = formField.GetAdditionalAction();
    if (additionalActions != null)
    {
        PdfDictionary formatDictionary = additionalActions.GetAsDictionary(PdfName.K);
        PdfString jsMethod = formatDictionary.GetAsString(PdfName.JS);
        string fieldJsMethod = jsMethod.GetValue();
    }

【讨论】:

  • 其实Adobe设置了一个描述性的/TU和/AA字典的/K条目,所以可以通过两种方式检查Adobe创建的字段的“格式”。
【解决方案2】:

我通过 Adob​​e 创建了一个 pdf(如你所建议的那样),我确实能够将文本字段的“格式”设置为 DateNumberPercentageEmail、..

然后我在 RUPS(一个用于打开 pdf 树的实用程序)中打开了生成的 pdf 并对其进行了调查。 事实证明,Adobe 将您想要获取的“格式”设置为字段字典的/TU 值。例如,PercentagepercentfieldEmail - emailfield

现在,您唯一需要找到字段的“格式”就是获取字段的 /TU 条目的值:

field.getValue().getPdfObject().get(PdfName.TU)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2012-07-24
    • 1970-01-01
    相关资源
    最近更新 更多