PDFBox在新的PDF中搜索特定页面上的文本



我正在寻找一种方法来检查我的新PDF中每一页上的特定String。这个想法是在每一页上,如果页面中缺少项目名称,就添加它(在保存pdf-doc.save(new FileOutputStream(new File(pathToFile)));之前

我已经试过了:

document.save(new FileOutputStream(new File(pathToFile)));

PDDocument document = PDDocument.load(new File(pathToFile));

for (int i = 1; i < document.getNumberOfPages(); i++) {
PDFTextStripper reader = new PDFTextStripper();
reader.setStartPage(i);
reader.setEndPage(i);
String pageText = reader.getText(document);
System.out.println(pageText);
}

结果是:Hello World,这是可以的。

但只有当文档已经保存并再次加载时,这才有效。

在我的情况下,当文档尚未保存时:

for (int i = 1; i < document.getNumberOfPages(); i++) {
PDFTextStripper reader = new PDFTextStripper();
reader.setStartPage(i);
reader.setEndPage(i);
String pageText = reader.getText(document);
System.out.println(pageText);
}

结果是empty String

很明显,在保存文档之前无法找到文本,所以我开始了一种新的方法。

oldPagesCount = document.getNumberOfPages();
addTableInformation(List<String> informationToAdd);
if (oldPagesCount < document.getNumberOfPages()) {
// we have auto generated pages and we should add projec name-number
for (int i = oldPagesCount; i < document.getNumberOfPages(); i++) {
page = document.getPage(i);
}
addProjectInfo(project);
}
}

在这种情况下,如果表信息被移动到多个页面,代码将在每个新添加的页面上进行,并添加项目信息。希望这能帮助到每一个需要这样做的人。

最新更新