Java pdfbox以什么顺序解析pdf文件?(假设一页中有多个列)

Java pdfbox以什么顺序解析pdf文件?(假设一页中有多个列),java,apache-poi,pdfbox,Java,Apache Poi,Pdfbox,如果一个pdf文件的页面上有两列,pdfbox是按列解析还是逐行解析?当你说“解析pdf文件”时,我想你的意思是对其应用文本提取。在这种情况下,PDFBox通常通过PDFTextStripper类实现 在这种情况下,答案是“视情况而定” 默认情况下,PDFTextStripper按照内容流中文本绘制指令的顺序进行提取。这通常与内容的逻辑顺序相对应,因为PDF生成器通常将输入按该顺序排列,并相应地生成输出,例如,多个列通常会按列提取 但这并不能保证;理论上,文本图纸说明可以是任意顺序;例如,首先

如果一个pdf文件的页面上有两列,pdfbox是按列解析还是逐行解析?

当你说“解析pdf文件”时,我想你的意思是对其应用文本提取。在这种情况下,PDFBox通常通过
PDFTextStripper
类实现

在这种情况下,答案是“视情况而定”

  • 默认情况下,
    PDFTextStripper
    按照内容流中文本绘制指令的顺序进行提取。这通常与内容的逻辑顺序相对应,因为PDF生成器通常将输入按该顺序排列,并相应地生成输出,例如,多个列通常会按列提取

    但这并不能保证;理论上,文本图纸说明可以是任意顺序;例如,首先可以绘制页面上的所有“a”,然后绘制所有“b”

    这样的混乱很少发生。但是,如果PDF的内容同时包含固定内容和动态内容,您可能会首先在提取的文本中看到固定内容,然后是动态内容。例如,第一个标签,如“名字”、“姓氏”、“出生日期”。。。然后是数值

  • 或者,您可以使用
    PDFTextStripper.setSortByPosition
    SortByPosition
    属性设置为
    true
    。在这种情况下,PDFBox会忽略绘图顺序,并尝试逐行提取PDF文本

    • 当你说“解析PDF文件”时,我想你的意思是对其应用文本提取。在这种情况下,PDFBox通常通过
      PDFTextStripper
      类实现

      在这种情况下,答案是“视情况而定”

      • 默认情况下,
        PDFTextStripper
        按照内容流中文本绘制指令的顺序进行提取。这通常与内容的逻辑顺序相对应,因为PDF生成器通常将输入按该顺序排列,并相应地生成输出,例如,多个列通常会按列提取

        但这并不能保证;理论上,文本图纸说明可以是任意顺序;例如,首先可以绘制页面上的所有“a”,然后绘制所有“b”

        这样的混乱很少发生。但是,如果PDF的内容同时包含固定内容和动态内容,您可能会首先在提取的文本中看到固定内容,然后是动态内容。例如,第一个标签,如“名字”、“姓氏”、“出生日期”。。。然后是数值

      • 或者,您可以使用
        PDFTextStripper.setSortByPosition
        SortByPosition
        属性设置为
        true
        。在这种情况下,PDFBox会忽略绘图顺序,并尝试逐行提取PDF文本


      问题的标题和正文说明了两件不同的事情。。。。请说得更具体一些。pdf文件的结构有很好的文档记录,解析文件的逻辑方式是“从头开始”。问题是pdf文件中的内容顺序可能与它在页面上的显示方式关系不大。您的PDF文件是如何生成的?PDF仅包含两列,但第一列是在解析第二列之后解析的。问题的标题和正文说明了两个不同的内容。。。。请说得更具体一些。pdf文件的结构有很好的文档记录,解析文件的逻辑方式是“从头开始”。问题是pdf文件中的内容顺序可能与它在页面上的显示方式关系不大。您的PDF文件是如何生成的?PDF仅包含两列,但第一列是在解析第二列之后解析的。