在PDFBox中按顺序阅读段落

问题描述 投票:0回答:1

我正在尝试使用PDFBox解析日记页面。这是我正在使用的代码的片段:

try (PDDocument document = PDDocument.load(new File("myfile.pdf"))) {

    if (!document.isEncrypted()) {

        PDFTextStripperByArea stripper = new PDFTextStripperByArea();
        stripper.setSortByPosition(true);

        PDFTextStripper tStripper = new PDFTextStripper();
        tStripper.setParagraphEnd("\n");

        String pdfFileInText = tStripper.getText(document);

        String output = "";

        String lines[] = pdfFileInText.split("\\r?\\n");
        for (String line : lines) {
            output += line + "\n";
        }

    }

}

问题是,即使我理解的段落没问题,它们也以完全随机的顺序显示。我需要以自然顺序(上,下,左,右)获取段落,但是PDFBox似乎是从页面的一侧跳转到另一侧的,而没有真正的原因。我的原始PDF文件还包含随机位置的图像,我认为这可能与此有关。

这里是未按顺序读取的PDF样本:

这是我从该样本中得到的:

GALIZA>2-3
Analizamos os programas de PSOE, PP, 
En Común-Unidas Podemos e do BNG

> Na Galiza hai case 15 librarías por cada 
100.000 habitantes

> Só o 26% das persoas propietarias son 
mulleres, fronte ao 74% de homes 

A media de 
traballadoras dunha 
libraría e de 3,5

TRABALLO>15
Día das Librarías

As oito 
medidas 
electorais 
para Galiza

有没有一种方法可以使段落自然排列?

java parsing pdf pdfbox
1个回答
0
投票
这项工作对您有用吗?

PDDocument document = PDDocument.load(new File("myfile.pdf")); PDFTextStripper stripper = new PDFTextStripper(); stripper.setSortByPosition(true); ObjectMapper objectMapper = new ObjectMapper(); for (int p = 0; p <= document.getNumberOfPages(); p++) { stripper.setStartPage(p); stripper.setEndPage(p); String text = stripper.getText(document); System.out.println(text); }

[可能未使用使用启发式的PDFTextStripperByArea。只是获取文本然后进行格式化?您可以尝试一下吗?

正如我在评论中所说,如果不直接查看pdf很难评估

© www.soinside.com 2019 - 2024. All rights reserved.