Java 在PDFBox中按顺序阅读段落

Java 在PDFBox中按顺序阅读段落,java,parsing,pdf,pdfbox,Java,Parsing,Pdf,Pdfbox,我正在尝试使用PDFBox解析日志页面。下面是我正在使用的代码片段: try (PDDocument document = PDDocument.load(new File("myfile.pdf"))) { if (!document.isEncrypted()) { PDFTextStripperByArea stripper = new PDFTextStripperByArea(); stripper.setSortByPosition(tru

我正在尝试使用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

有没有办法让段落按自然顺序排列?

这对你有用吗

        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);
        }
PDDocument document=PDDocument.load(新文件(“myfile.pdf”);
PDFTextStripper剥离器=新的PDFTextStripper();
脱扣器。设置端口BYPOSITION(真);
ObjectMapper ObjectMapper=新的ObjectMapper();

对于(int p=0;p),不看pdf就很难对其进行评论。只是添加了一个示例“但是PDFBox似乎没有真正的原因从页面的一侧跳到另一侧”-原因是你的特定PDF中的文本绘制说明以奇怪的顺序出现,PDFBox只是向你反映了这一点…这就是我的想法,谢谢你的回答。我必须找到另一种方法现在它读取全文,这对我不起作用,因为我试图解析的日志是以列形式编写的,所以PDFBox I如果你知道位置,你可以尝试提取TextByArea。谢谢你的评论。不幸的是,在解析一些pdf文件之前,位置是未知的。这个解决方案解决了我的问题,谢谢。我还建议使用t如果仍有问题,则使用Tabla库/应用程序。它可以用作命令行应用程序,也可以用作带有Tabla java的java库: