使用Java搜索PDF文档中的特定文件

时间:2015-06-10 04:06:01

标签: java pdf

嗨我有一个PDF文件,我需要在其中搜索特定的字符串。我尝试了各种方法,并且能够读取PDF文件中的所有内容,但无法找到特定的字符串。

enter image description here

在这个文件中,我需要单独搜索电话,垃圾,租金等字符串。

你能帮我吗?

我有以下代码来阅读文件。

public class PDFBoxReader {

private PDFParser parser;
private PDFTextStripper pdfStripper;
private PDDocument pdDoc ;
private COSDocument cosDoc ;

private String Text ;
private String filePath;
private File file;

public PDFBoxReader() {

}
public String ToText() throws IOException
{
   this.pdfStripper = null;
   this.pdDoc = null;
   this.cosDoc = null;

   file = new File("D:\\report.pdf");
   parser = new PDFParser(new FileInputStream(file));

   parser.parse();
   cosDoc = parser.getDocument();
   pdfStripper = new PDFTextStripper();
   pdDoc = new PDDocument(cosDoc);
   pdDoc.getNumberOfPages();

   pdfStripper.setStartPage(1);
   pdfStripper.setEndPage(10);
   // reading text from page 1 to 10
   // if you want to get text from full pdf file use this code
   // pdfStripper.setEndPage(pdDoc.getNumberOfPages());

   Text = pdfStripper.getText(pdDoc);
   return Text;
  }

public void setFilePath(String filePath) {
    this.filePath = filePath;
}

}

如果有人可以帮助我查找搜索特定字符串的代码,那将会很棒。提前谢谢。

1 个答案:

答案 0 :(得分:1)

尝试String.indexOf("substring") StringToText()方法返回的内容,substring是您要搜索的字符串。 (旁注,Java中的自定义是驼峰式方法,在这种情况下为toText()。)

此方法应在您的String长文本中找到输入的子字符串的第一个索引。因此,您可以String.indexOf("Telephone")查找String中第一次出现的电话一词。

如果您希望直接在该子字符串之后输入内容,则索引将只是String.indexOf("substring")+"substring".length()

您甚至可以使用此方法的另一种变体String.indexOf("substring", indexOfLastOccurrence+"substring".length)找到下一个匹配项(或下一个匹配项)

示例:

String myPDF = ToText();
int rentIndex = myPDF.indexOf("Rent")+"Rent".length();
String rent = myPDF.substring(rentIndex); //Find 1st occurrence of "Rent" and get info after it
rent = rent.substring(int beginIndex, int endIndex); //Get endIndex-beginIndex characters after rent. (I assume you only want like a few numbers afterwards or something.)
//process rent e.g. Integer.parseInt(rent) or something

rentIndex = myPDF.indexOf("Rent",rentIndex)+"Rent".length();
rent = myPDF.substring(rentIndex); //Next occurrence of "Rent"
//Repeat to find the next occurrence, and the one after that. (Until rentIndex gets set to a negative, indicating that no more occurrences exist.)

这两种方法都可以在Java API中找到: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(java.lang.String)