自定义 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(.*)"
所以基本上我想从上面提到的单个页面上捕获所有内容
创建一个函数,将 String
文本作为参数定位单个 matcher.group(1)
,并且 return String
或 Optional<String>
创建一个模式并使用正则表达式告诉该模式您想从哪里开始捕获
您可以按照 Artjom 的说明捕获整个文本,也可以创建一个从 PDFTextStripper 扩展的自定义 PDFTextStripper 并覆盖解析文本的函数,如下所示
@Override
protected void writeString(String text, List<TextPosition> textPositions) {
...
}
然后使用 TextPositions 确定您应该从哪里开始解析
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(.*)"
所以基本上我想从上面提到的单个页面上捕获所有内容
创建一个函数,将
String
文本作为参数定位单个matcher.group(1)
,并且 returnString
或Optional<String>
创建一个模式并使用正则表达式告诉该模式您想从哪里开始捕获
您可以按照 Artjom 的说明捕获整个文本,也可以创建一个从 PDFTextStripper 扩展的自定义 PDFTextStripper 并覆盖解析文本的函数,如下所示
@Override
protected void writeString(String text, List<TextPosition> textPositions) {
...
}
然后使用 TextPositions 确定您应该从哪里开始解析