Knowledged Ответов: 1

Извлечение текста из pdf-файла


Так что на данный момент у меня есть PDF-файл, который я пытаюсь разобрать


8:45 9:15 HMI IHMI1 HMI 12:45 12:45 0 MTWRFS MTWRFS
Transit 
CarrierSCAC: BPUS Stop Number:
CYT-HMI-S-004 1 Release Type: AUTO
Route Name:
Days to 
Pick-up Delivery 
Final 
Order Due @ 
Frequency: Frequency:
Carrier Departure Plant Destination Dock Code Initial Dest Location
Carrier Arrival Final Location
Initial Arrival
9:45 10:15 HMI IHMI1 HMI 13:45 13:45 0 MTWRFS MTWRFS
Transit 
CYT-HMI-S-005 CarrierSCAC: BPUS Stop Number:1 Release Type: AUTO
Route Name:
Days to 
Pick-up Delivery 
Final 
Order Due @ 
Frequency: Frequency:
Location
Carrier Arrival Carrier Departure Plant Destination Dock Code Initial Dest Final Location
Initial Arrival
10:45 11:15 HMI IHMI1 HMI 14:45 14:45 0 MTWRFS MTWRFS
Transit 
CYT-MAP-S-001 CarrierSCAC: ONEW Stop Number:1 Release Type: AUTO
Route Name:
Days to 
Pick-up Delivery 
Final 
Order Due @ 
Frequency: Frequency:
Location
Carrier Arrival Carrier Departure Plant Destination Dock Code Initial Dest Final Location
Initial Arrival
13:45 14:15 MAP MAP1 MAP 15:15 15:15 0 MTWRFS MTWRFS
Transit 
CarrierSCAC: ONEW Stop Number:
CYT-MAP-S-002 1 Release Type: AUTO
Route Name:



Код, который я сейчас использую


<pre>public static void ReadPDF()
        {
            StringBuilder text = new StringBuilder();
            using (PdfReader reader = new PdfReader(@"C:\Users\bwhitt.1.3864\Desktop\CEVA.pdf"))
            {
                for (int i = 1; i <= reader.NumberOfPages; i++)
                {
                    text.Append(PdfTextExtractor.GetTextFromPage(reader, i));
                    Debug.Print(text.ToString());
                }
            }
           
        }




Мой желаемый результат будет следующим
CYT-HMI-S-004 8:45 9:15 HMI IHMI1 HMI 12:45 12:45 0 MTWRFS MTWRFS

CYT-HMI-S-005  9:45 10:15 HMI IHMI1 HMI 13:45 13:45 0 MTWRFS MTWRFS


CYT-MAP-S-001 10:45 11:15 HMI IHMI1 HMI 14:45 14:45 0 MTWRFS MTWRFS


CYT-MAP-S-002 1  13:45 14:15 MAP MAP1 MAP 15:15 15:15 0 MTWRFS MTWRFS



вот как я хотел бы, чтобы данные были показаны номер маршрута, а затем строка после "inital arrival", как бы я это сделал?

Что я уже пробовал:

просто попытался извлечь pdf-файл и прочитать строки. Это все, что я могу сделать.,

1 Ответов

Рейтинг:
0

Richard MacCutchan

Я уже дал вам предложение в вашем предыдущем вопросе на эту тему. Вам нужно прочитать каждую строку, ища закономерности. Когда вы находите строку, содержащую "начальное прибытие", вы знаете, что следующая строка содержит данные, которые вы ищете.


Knowledged

Хорошо, так что я его проанализировал, чтобы быть таким:

10:15 11:00 HMI IOSL1 OSL 17:15 17:15 0 MTWRFS MTWRFS
9:00 9:45 PMC YMEI2H DSC 12:45 20:30 0 M M
7:00 7:45 ELP TOSCC1 OSE 12:45 12:45 0 MTWRFS MTWRFS
16:30 17:15 MAP AMMC1 MMC 20:30 20:30 0 MTWRFS MTWRFS
6:30 7:00 ELP ELP1 ELP 8:15 8:15 0 MTWRFS MTWRFS
9:30 10:00 ELP ELP1 ELP 11:15 11:15 0 MTWRFS MTWRFS
10:45 11:15 ELP ELP1 ELP 12:30 12:30 0 MTWRFS MTWRFS
12:15 12:45 ELP ELP1 ELP 14:00 14:00 0 MTWRFS MTWRFS
12:30 13:00 ELP ELP1 ELP 14:15 14:15 0 MTWRFS MTWRFS
13:00 13:30 ELP ELP1 ELP 14:45 14:45 0 MTWRFS MTWRFS
13:30 14:00 ELP ELP1 ELP 15:15 15:15 0 MTWRFS MTWRFS
14:45 15:15 ELP ELP1 ELP 16:30 16:30 0 MTWRFS MTWRFS
17:45 18:15 ELP ELP1 ELP 19:30 19:30 0 MTWRFS MTWRFS
18:15 18:45 ELP ELP1 ELP 20:00 20:00 0 MTWRFS MTWRFS
6:30 7:00 HMI IHMI1 HMI 10:30 10:30 0 MTWRFS MTWRFS
6:45 7:15 HMI IHMI1 HMI 10:45 10:45 0 MTWRFS MTWRFS
8:45 9:15 HMI IHMI1 HMI 12:45 12:45 0 MTWRFS MTWRFS
9:45 10:15 HMI IHMI1 HMI 13:45 13:45 0 MTWRFS MTWRFS
10:45 11:15 HMI IHMI1 HMI 14:45 14:45 0 MTWRFS MTWRFS
13:45 14:15 MAP MAP1 MAP 15:15 15:15 0 MTWRFS MTWRFS
16:45 17:15 MAP MAP1 MAP 18:15 18:15 0 MTWRFS MTWRFS


Я нашел эту статью: https://sa.ndeep.me/post/programatically-add-rows-in-a-wpf-datagrid/

Поэтому то, что я сейчас пытаюсь сделать, - это отделить и добавить в datagrid вот так

13:45 14:15 MAP MAP1 MAP 15:15 15:15 0 MTWRFS MTWRFS


Routes.Collection.Add(new Route { TimeArrived = "13:45", TimeDeparted = "14:15", ShipLocation = "MAP" ...});


и так далее, я надеюсь, что это имеет смысл.

Richard MacCutchan

В чем же проблема?

Knowledged

Как я могу добавить их в коллекцию из строк

Richard MacCutchan

Как я тебе уже говорил. Разделите строку на отдельные части и добавьте каждый элемент в последовательные ячейки строки DataGridView. Учитывая, что вы создали проект MVVM, я ожидаю, что вы легко найдете такие основные вопросы.

Knowledged

ты говоришь то же самое, что и я. Я знаю, чего хочу от него. Я прошу о помощи в выполнении этой задачи...

Richard MacCutchan

Вы ничего нам не говорите, просто говорите: "Я хочу...", но это для нас ничего не значит. Вам нужно подробно объяснить, какие результаты вы пытаетесь получить и в чем заключается проблема.

Если вы не знаете, как разбить строку на отдельные поля или как добавить информацию в DatagridView, то вам нужно пойти и посмотреть документацию для обоих классов.