Android 如何使用iText提取特定文本而不是所有文本?

Android 如何使用iText提取特定文本而不是所有文本?,android,pdf,itext,text-extraction,Android,Pdf,Itext,Text Extraction,我试图不必要地提取这个词 但是当我提取整个文本时,我应该怎么做呢 我就是这样做的 String strfile = Environment.getExternalStorageDirectory() + "/pk.pdf"; StringBuilder sb = new StringBuilder(); PdfReader reader = null; try { reader = new PdfReader(strfile); } ca

我试图不必要地提取这个词

但是当我提取整个文本时,我应该怎么做呢

我就是这样做的

    String strfile = Environment.getExternalStorageDirectory() + "/pk.pdf";
    StringBuilder sb = new StringBuilder();

    PdfReader reader = null;
    try {
        reader = new PdfReader(strfile);
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        try {
            //  System.out.println(PdfTextExtractor.getTextFromPage(reader, i));
                data = sb.append(PdfTextExtractor.getTextFromPage(reader, i));
                System.out.println(data + "\n" + "PDF VERSION: " + reader.getPdfVersion()+ "\n" + "File Length: " + reader.getFileLength()+"\n"+"Info: "+reader.getInfo()+"\n"+"Require to Decrypt: " + reader.isEncrypted() + "\n" + "EOF: " + reader.getEofPos() + "\n" + reader.getLastXref());
        } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
} 

return data;
这在设备上花费了太多的时间。所以我不想要整个文本?
这可能吗?

如果您不知道搜索的文本在哪里,您必须浏览所有页面并检查它们是否包含有问题的文本。当然,您不需要像在StringBuilder sb中那样保留所有页面的所有文本:您可以首先检查从PdfTextExtractor.getTextFromPage返回的数据,并且仅在其中包含感兴趣的文本时保留它。是否有方法仅获取所需的字符而不是整个文本@mklYou可以创建一个自定义的TextExtractionStrategy,它只返回所需的文本部分。有一个pdftextractor.getTextFromPage重载,它接受显式的TextExtractionStrategy参数,而代码使用默认的LocationTextExtractionStrategy。您的TextExtractionStrategy替换可以在确定无法使用文本块时立即丢弃它们。