Java 使用iText从pdf文档检索所有标题

Java 使用iText从pdf文档检索所有标题,java,itext,Java,Itext,我尝试阅读pdf文档并提取pdf文档中的所有标题。 标题示例: 1标题 1.1标题示例1 1.2标题示例2 1.2.1标题示例3 为此,我使用iText。你知道我该如何检索标题吗? 多谢各位 PdfReader = new PdfReader((new FileInputStream(systemResource.getFile()))); PdfReaderContentParser parser = new PdfReaderContentParser(pdfReader); for(in

我尝试阅读pdf文档并提取pdf文档中的所有标题。 标题示例:

1标题

1.1标题示例1

1.2标题示例2

1.2.1标题示例3

为此,我使用iText。你知道我该如何检索标题吗? 多谢各位

PdfReader = new PdfReader((new FileInputStream(systemResource.getFile())));
PdfReaderContentParser parser = new PdfReaderContentParser(pdfReader);

for(int i = 1; i <= pdfReader.getNumberOfPages(); i++){
            TextExtractionStrategy simpleTextExtractionStrategy = parser.processContent(i, new SimpleTextExtractionStrategy());
            simpleTextExtractionStrategy.getResultantText();
}
PdfReader=newpdfreader((newfileinputstream(systemResource.getFile()));
PdfReaderContentParser=新的PdfReaderContentParser(pdfReader);

对于(int i=1;i,PDF标准中基本上有两组可用

  • 标记:PDF文档包含有助于识别文档结构的元信息(段落、章节、页眉、页脚、表格、列表等)
  • 未标记:PDF文档仅包含查看器能够呈现页面的说明

    e、 g:

    • 将光标移动到50,50
    • 将字体设置为Helvetica,大小为12
    • 绘制字符“H”的图示符
    如果对PDF文档进行了标记,则可以轻松检索文档结构(以及标题)

如果PDF文档未标记,则需要编写自己的自定义逻辑来识别文本块(将原始数据提供给
IEventListener
)。您需要将这些块合并到行中(基于某种启发式)。然后您就能够识别标题(使用“以数字开头”或“字体通常大于页面上的平均字体大小”等试探法)