Java PDFBox提取表单pdf的标签

Java PDFBox提取表单pdf的标签,java,pdfbox,pdf-form,Java,Pdfbox,Pdf Form,我有表格PDF文件,如图所示 使用Java中的PDFBox,我检索了表单字段的文本。 我的代码: 输出: 给定名称文本框=Jignesh 姓氏文本框=Jignesh 房屋编号文本框=xyz 地址2文本框=pqr 我想下面也被检索 姓名: 姓氏: 地址1: 作为 给定名称文本=给定名称: 姓氏文本=姓氏: 房屋编号文本=地址1: 地址2文本=地址2: 因为上面是表单字段,所以很容易检索所有字段。我甚至想提取表单的标签,因为我想映射它们 请帮我做同样的事情。 非常感谢。静态文本字段是什么

我有表格PDF文件,如图所示

使用Java中的PDFBox,我检索了表单字段的文本。 我的代码:

输出:

  • 给定名称文本框=Jignesh
  • 姓氏文本框=Jignesh
  • 房屋编号文本框=xyz
  • 地址2文本框=pqr

我想下面也被检索

  • 姓名:
  • 姓氏:
  • 地址1:
  • 作为

    • 给定名称文本=给定名称:
    • 姓氏文本=姓氏:
    • 房屋编号文本=地址1:
    • 地址2文本=地址2:

    因为上面是表单字段,所以很容易检索所有字段。我甚至想提取表单的标签,因为我想映射它们

    请帮我做同样的事情。
    非常感谢。

    静态文本字段是什么意思?您的代码打印所有字段的内容。页面上的所有内容都是页面内容的一大块。很抱歉,我的英语错了,我想写:我想提取表单标签,而不是静态文本字段。表单字段的标签是常规页面内容的一部分。您可以使用
    PdfTextStripper
    或其子类(例如
    PdfTextStripperByArea
    )提取页面内容文本。但是您必须知道标签相对于字段的位置以及相应的代码。在您的情况下,它们位于文本字段的左侧。
        File file = new File("example.pdf");
        PDDocument doc = PDDocument.load(file);
        PDDocumentCatalog catalog = doc.getDocumentCatalog();
        PDAcroForm form = catalog.getAcroForm();
        PDFieldTree fields = form.getFieldTree();
    
        for (PDField field : fields) {
            Object value = field.getValueAsString();
            String name = field.getPartialName();
            System.out.print(name);
            System.out.print(" = ");
            System.out.print(value);
            System.out.println();
        }