У меня есть более 200 файлов отчетов в формате PDF, в которых мне нужно получить VIN # и номер дела из каждого отчета, а затем переименовать отчет с VIN + Case # .pdf.
Что касается VIN #, его было легко получить, поскольку он всегда расположен в начале страницы, а VIN имеет фиксированную длину, которая составляет 17 символов.
У меня проблема с номером дела, когда я не могу получить точное число, поскольку индекс «Номер дела» получает изменения от одного отчета к другому в зависимости от количества слов в каждой ячейке, стоящей перед " Номер дела ».
Мой вопрос: как я могу сказать java дать мне строку, которая находится между двумя пробелами, одна из которых идет после« Номер дела », а вторая стоит перед ячейкой «Системный ключ»
Я попытался разбить все слова пробелами, и я застрял с лог c того, как действительно получить это определенное c число, несмотря на его порядковый номер.
ПРИМЕЧАНИЕ: Номер дела всегда разный, и его длина тоже не одинакова
Вот что у меня есть на данный момент:
package Read_Pdf_AsA_Text;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
public class GetVinAndCaseNum {
public static void main(String args[]) throws IOException {
File folder = new File("C:\\Users\\" + System.getProperty("user.name") + "\\Desktop\\Tasks\\test\\");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
File f = new File("C:\\Users\\" + System.getProperty("user.name") + "\\Desktop\\Tasks\\test\\"+listOfFiles[i].getName());
PDDocument document = PDDocument.load(f);
PDFTextStripper pdfStripper = new PDFTextStripper(); // Instantiate PDFTextStripper class
String text = pdfStripper.getText(document); // Retrieving text from PDF document
System.out.println(text);
if (text.contains("VIN")) {
int vinIndexIs = text.indexOf("VIN");
int newVINIndex = vinIndexIs + 3;
String vinNum = text.substring(newVINIndex, newVINIndex + 19);
System.err.println("New VIN is ===> " + vinNum);
}
int caseNo = 0;
if (text != null) {
String[] spcase = text.split(" ");
System.out.println("spaces ==> " + spcase);
boolean foundCaseNumber = false;
for (String stringAfterSpace : spcase) {
System.out.println("stringAfterSpace ==> " + stringAfterSpace);
if(foundCaseNumber) {
caseNo = Integer.parseInt(stringAfterSpace.trim());
System.out.println("caseNo ==> " + caseNo);
break;
}
if("Case Number".equals(stringAfterSpace)) {
System.out.println("Case Number issss ===> " + stringAfterSpace);
foundCaseNumber = true;
}
}
if(caseNo == 0) {
System.out.println("Case No. not found.");
}
}
document.close();
System.out.println("conversion is done");
}
}
}
}