java - PDFBox - 获取单词位置(而不仅仅是字符')

标签 java pdf text extraction pdfbox

是否可以使用 PDFBox 获取单词的位置,类似于“processTextPosition”? 似乎 processTextPosition 仅在单个字符上调用,将它们合并为单词的代码是 PDFTextStripper(在“规范化”中)方法的一部分,它确实返回文本的位置。 是否也有提取位置的方法/实用程序? (对于那些想知道动机是什么的人——信息实际上是一个表格,我们想检测空单元格) 谢谢

最佳答案

要获取从 pdf 文件中提取的文本中的单词及其 x 和 y 位置,您必须扩展 PdfTextStripper 类并使用自定义类从 pdf 文件中提取文本,例如

public class CustomPDFTextStripper extends PDFTextStripper{

    public CustomPDFTextStripper() throws IOException {

    }

    /**
    * Override the default functionality of PDFTextStripper.
    */

    @Override
    protected void writeString(String text, List<TextPosition> textPositions) throws IOException{
        TextPosition firstProsition = textPositions.get(0);
        writeString(String.format("[%s , %s , %s]", firstProsition.getTextPos().getXPosition(),
                firstProsition.getTextPos().getYPosition(), text));

    }
}

创建这个自定义类的对象并提取文本

PDFTextStripper pdfStripper = new CustomPDFTextStripper();
String text = pdfStripper.getText(*pdf file wrapped as a PDDocument object*);

结果文本字符串的格式为 [xposition, yposition, word],由默认的单词分隔符分隔

关于java - PDFBox - 获取单词位置(而不仅仅是字符'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354266/

相关文章:

java - 如何缓存锁以同步对域对象的访问

java - 库错误与开发人员端应用程序错误的证明

Java:如何修复 Itext PdfReader 找不到方法 getPageN(int pageNumber)?

pdf - RMarkdown 到 PDF 两个 gt() 表一个挨着一个

c++ - 如何在QT中的QToolButton下方设置文本而不是在图标下方

text - LaTeX 中的缩进自动换行

qt - QLabel中的文本滚动(字幕)

java - 如何在 JavaFX 中对任务进行排队?

java - 如何获取 ttl 以及 redis/redisson 中的键值

python - 合并 PDF,同时保留自定义页码(也称为页面标签)和书签