搜索句子并使用icepdf获取行号

时间:2013-08-22 05:09:14

标签: java pdf icepdf

我尝试用icepdf搜索句子。大部分时间都得到了正确的结果。但我现在面临的问题是

  • 我在 搜索以一行开头并在下一行结束的句子 时失败了。有没有找到相同的解决方案?我尝试将这些句子拆分并分别搜索。但这可能会导致更多问题。

  • 最后,是否有任何方法可以让我知道 行号 ,我将搜索键与之匹配。 请帮忙。

1 个答案:

答案 0 :(得分:1)

遍历文档中的所有行并创建句子列表。每个句子都可以是WordText个对象的列表。然后搜索您创建的列表列表以查找您的句子。

以下是一些示例代码(我现在没有检查过)来构建WordText个对象的列表列表。

ArrayList<ArrayList<WordText>> Sentences = new ArrayList<ArrayList<WordText>>;
ArrayList<WordText> currentSentence = new ArrayList<WordText>;
Document document = new Document();

// Build sentences
for (int pageNumber = 0, max = document.getNumberOfPages(); 
     pageNumber < max;     pageNumber++) {
  PageText pageText = document.getPageText(pageNumber);
  ArrayList<LineText> pageLines = pageText.getPageLines();
  for (LineText pageLine : pageLines) {
    ArrayList<WordText> words = pageLine.getWords();
    for (WordText word : words) {
      // If this is a word, and the last word was not a space, 
      // start a new sentence
      if(!word.getText().equals(" ") && currentSentence.size() > 0
         !currentSentence.get(currentSentence.size() - 1).getText().equals(" ")) {
        sentences.add(currentSentence);
        currentSentence = new ArrayList<WordText>;
      }
      // Add word to current sentnece
      currentSentence.add(word);
    }
   // Add the last sentence in
   sentences.add(currentSentence);
  }
}

如果需要对WordText列表进行排序,可以比较WordText对象y和x值。