自定义 PDFTextStripper PDFbox

Customizing PDFTextStripper PDFbox

PDFTextStripper具有从整个文档中提取文本的功能,有没有办法在识别值时仅在某个值之后提取文本,例如:

A B C D G   1 line

A B C D G   2 line

A B C D G   3 line

QUANTITY  4 line

我想在找到 Quantity(String) 后开始提取文本 如果有人处理 PDFBox 并有一些建议,将不胜感激

或者只有当它在文本将包含的值之后的一行时才可以添加到列表中?

最简单的解决方案是捕获整个文本,然后创建一个模式,上面写着 -> "DESCRIPTION\s*Reference\s*QUANTITY(.*)" 所以基本上我想从上面提到的单个页面上捕获所有内容

  1. 创建一个函数,将 String 文本作为参数定位单个 matcher.group(1),并且 return StringOptional<String>

  2. 创建一个模式并使用正则表达式告诉该模式您想从哪里开始捕获

您可以按照 Artjom 的说明捕获整个文本,也可以创建一个从 PDFTextStripper 扩展的自定义 PDFTextStripper 并覆盖解析文本的函数,如下所示

@Override
protected void writeString(String text, List<TextPosition> textPositions) {
    ...
}

然后使用 TextPositions 确定您应该从哪里开始解析