【问题标题】:Itext 7 - Cannot get tab order of the fieldItext 7 - 无法获取字段的标签顺序
【发布时间】:2019-07-02 06:50:28
【问题描述】:

iText7可以获取PDF字段的tab顺序吗?

您可以在 Acrobat 中定义 Tab 键顺序,但在 iText7 库中似乎无法获得该 Tab 键顺序。

我正在编写一个从 PDF 文件中提取字段的应用程序,并希望根据从 PDF 中定义的 Tab 键顺序对这些字段进行排序。

【问题讨论】:

    标签: itext itext7


    【解决方案1】:

    页面上字段的顺序(或更确切地说:注释)由页面字典中的 Tabs 条目决定。其值指定为:

    (可选;PDF 1.5) 一个名称,指定用于页面上的注释的跳位顺序(参见 12.5“注释”)。可能的值应为R(行顺序)、C(列顺序)和S(结构顺序)。从 PDF 2.0 开始,可能的值还包括 A(注释数组顺序)和 W(小部件顺序)。 Annotations 数组顺序是指在 Page 字典的 Annots 条目中枚举的注释的顺序(参见“表 31 — 页面对象中的条目”)。小部件顺序是指使用相同的数组排序但进行两次传递,第一次只选择小部件注解,第二次选择所有其他注解。

    (ISO 32000-2,表 31 - 页面对象中的条目)

    要执行提取要根据从 PDF 定义的 Tab 键顺序排序的字段的任务,因此,您必须读取相关页面的此值,并根据它分析注解坐标、结构树或注解数组。

    顺便说一句,对于具有多个小部件的字段,这意味着它们也有多个选项卡位置;因此,对于某些文档,导出要根据从 PDF 定义的 Tab 键顺序排序的字段可能是不可能的。

    【讨论】:

    • 感谢@mkl 的回答。这在 iText7 中似乎不是一件容易的事。其他 pdf 库,如 iTextSharp.LGPLv2.Core,它们有一个名为 GetTabOrder 的方法,可以轻松获取字段的 Tab 键顺序。
    • 在该方法中返回的 iText 2.x、4.x 和 5.x 是在 Tabs 的值为 的情况下的正确顺序值一个。如果有任何其他可能的 Tabs 值,则该值可能是错误的。 (可能注释数组顺序也是默认值。)
    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 2015-06-24
    相关资源
    最近更新 更多