如何从PDF中读取条件文本?

时间:2019-08-25 06:34:40

标签: java selenium pdf text pdfbox

我想阅读PDF中的特定部分。那怎么可能?例如:如果您访问URl:假设我只想获取第1部分的数据。

    URL url = new URL("https://www.uscis.gov/sites/default/files/files/form/i-129.pdf");

    InputStream is = url.openStream();
    BufferedInputStream fileParse = new BufferedInputStream(is);
    PDDocument document = null;
    document = PDDocument.load(fileParse);
    String pdfContent = new PDFTextStripper().getText(document);

    System.out.println(pdfContent);

1 个答案:

答案 0 :(得分:0)

在特定情况下,您可以设置剥离器的起始页和结束页,这样就不会每次都获得完整的文档,然后使用一些简单的字符串操作来获取所需的内容。

这是一个基于您的代码的完整,更通用的工作示例。

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;

public class App {
    public static void main(String...args) throws Exception {
        String path = "..."; // replace with whatever path you need
        String startDelimiter = "..."; // replace with wherever the start is
        String endDelimiter = "...";
        URL url = new URL(path);
        InputStream is = url.openStream();
        BufferedInputStream fileParse = new BufferedInputStream(is);
        PDDocument document = PDDocument.load(fileParse);
        PDFTextStripper stripper = new PDFTextStripper();
        // set this stuff if you know more or less where it should be in the pdf to avoid stripping the whole thing
        stripper.setStartPage(1);
        stripper.setEndPage(3);
        // get the content
        String content = stripper.getText(document);
        String searchedContent = content.substring(content.indexOf(startDelimiter), content.indexOf(endDelimiter));
        System.out.println(searchedContent);
    }
}

如果另一方面,如果您不知道要查找的文档中的何处,则可以通过一些工作来搜索文档以获取起始页和结束页或其他内容。参见此similar question