Использование Java и pdfBox для поиска в pdf суммы usd - PullRequest
0 голосов
/ 06 ноября 2019

Это что-то, что может сэкономить мне около 10 минут на работе, мне не платят за это. Это Java. Прошло много времени с тех пор, как я коснулся Java. Я ищу в PDF только цифры, которые используют валютную форму USD через pdfBox. Это то, на что похож документ.

Activity Report
Business Date: 10/9/2019   Property Code: me.ra777   Shift: 9   User: me.ra777
Reserve 

Account Person Name Start End Days Status Money TypeOfCode Type Location Source GTD Date User
077071543 Smith's, John Middle 9/25/19 9/26/19 1 O 55.50 BAR SNQQ 211 WI MC 9/25/19 me.ra777
877075375 45Lisa, Jo.nes Mid  9/25/19 9/26/19 1 I 99.00 SEG SNKE 138 WI VI 9/25/19 me.ra777
677256813 Jo^hn Wi.ck Ed 9/26/19 9/27/19 1 O 129.00 TRQ SNQQ 132 WI VI 9/26/19 me.ra777
477007406 Guys, Are 9/26/19 9/27/19 1 O 129.00 BAR SNQQ 133 WI VI 9/26/19 me.ra777
977495887 Last, First 9/27/19 9/28/19 1 O 165.00 BAR SNKE 438 WI VI 9/27/19 me.ra777
677472246 Po.or, Rich 9/27/19 9/28/19 1 O 165.00 BAR SNKE 138 WI MC 9/27/19 me.ra777
677457228 Dude, Isn't Here 9/27/19 9/28/19 1 I 180.00 BAR SNQQ 433 WI MC 9/27/19 me.ra777

Date/Time of Printing: 10/10/2019 1:42 PM   Software Version: ssrs7x67    Page 1 of 1

Если бы я использовал такой метод ......

public static void oneLine(Scanner sc){

    while (sc.hasNextLine()) {   
        String line = sc.nextLine();   
    if(line.contains(" WI ")){    
        displayArea.append("\n"+line + "\n");
        break; 
    }else{}

     }
        sc.close();
    }    

Я бы получил это только для своего вывода.

077071543 Смитс, Джон Мидл 25.09.199 9.09.1910 1 O 55,50 БАР SNQQ 211 WI MC 9/25/19 me.ra777

Myжелаемый выход будет просто

55,50

Может быть, даже все суммы в долларах США, как это

55,50 99,00 129,00 129,00 165,00 165,00 180,00

Хорошо, еще немного данных об этом документе. Мне нужны только данные в этих строках

077071543 Smith's, John Middle 9/25/19 9/26/19 1 O 55.50 BAR SNQQ 211 WI MC 9/25/19 me.ra777
877075375 45Lisa, Jo.nes Mid  9/25/19 9/26/19 1 I 99.00 SEG SNKE 138 WI VI 9/25/19 me.ra777
677256813 Jo^hn Wi.ck Ed 9/26/19 9/27/19 1 O 129.00 TRQ SNQQ 132 WI VI 9/26/19 me.ra777
477007406 Guys, Are 9/26/19 9/27/19 1 O 129.00 BAR SNQQ 133 WI VI 9/26/19 me.ra777
977495887 Last, First 9/27/19 9/28/19 1 O 165.00 BAR SNKE 438 WI VI 9/27/19 me.ra777
677472246 Po.or, Rich 9/27/19 9/28/19 1 O 165.00 BAR SNKE 138 WI MC 9/27/19 me.ra777
677457228 Dude, Isn't Here 9/27/19 9/28/19 1 I 180.00 BAR SNQQ 433 WI MC 9/27/19 me.ra777

Все в этих строках может измениться, КРОМЕ под источником, где написано "WI", и под пользователем, где написано "me.ra777". Люди могут путать такие имена, какгде вы видите «45Lisa, Jo.nes» и «Jo ^ hn Wi.ck»

В конечном итоге у меня еще много работы после этого. Где мне нужно добавить все суммы в долларах США, и еще немного, где я делю их на 100;который, как я полагаю, в этом примере дал бы мне 9,225, если бы я правильно сделал свою математику .....

Я действительно надеюсь, что смогу просто изменить часть этого кода, как здесь ...

    if(line.contains(" WI ")){

Так что тогда я мог по крайней мере получить вывод только тех строк, которые мне нужны, и я мог бы немного поработать самостоятельно и попытаться выяснить остальное самостоятельно.

1 Ответ

0 голосов
/ 14 ноября 2019

Решил это. Короче говоря, у меня было два основных метода ----> find () и getUSD (Final String)

find() Used 
1. A for Loop 
2. A while(String.astNextLine)
3. If line contains("WI" && ! linecontains "Software Version " ) 
4. varable rate = getUSD(String) 
5. doSumMathStuffs'andComplainAboutWhyJavacan'tTellThisIsa#WithoutParseing 
    ;; 
6. print ("\n"+rate);

    getUSD(Final String) used 
1. If/else "Matcher m = Pattern.compile("-?\d+(\.\d+)").matcher(strings);" 
2. while(m.find) 
3 return m.group 
4. There's Actualy some parseing and some other "transfer this variable tYpE to that TyPe " too
...