Как запустить функцию цикла, как только моя программа найдет определенную строку в pdf - файле?
Используя iTextSharp, я пытаюсь создать программу, которая будет читать pdf-файл, извлекать текстовую цену (например, $2.00 или 0.20¢) каждый раз, когда она находит ее в файле, а затем отображает весь список.
Я надеюсь извлечь только цены с определенной страницы, а не весь pdf-файл. Я бы хотел, чтобы программа читала каждую строку в pdf-файле, и когда строка содержит строку "сводка тарифов и сборов", она начнет процесс извлечения текстовых цен, а когда она прочитает строку "летний товар", она разорвет цикл.
Прямо сейчас код, который у меня есть, будет выводить каждую текстовую цену, которую он найдет из файла; это не то, что я хочу, чтобы он делал. Он проверит, есть ли в pdf-файле строка ("сводка тарифов и сборов") где-то в файле, и если да, то начнет извлекать текстовые цены от начала pdf-файла до конца.
Я не хочу, чтобы он начинался с самого начала, но скорее он начнется, как только программа прочитает строку ("сводка тарифов и сборов"). Как только он найдет эту строку, он будет продолжать читать каждую строку, пока не найдет текстовую цену и не начнет извлекать ее. Но как только программа найдет строку ("летний товар"), она разорвет цикл и перестанет извлекать больше текстовые цены.
Что я уже пробовал:
Imports iTextSharp.text.pdf Imports iTextSharp.text.pdf.parser Imports iTextSharp.text Imports System.IO Imports System.Text.RegularExpressions Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click GetTextFromPDF("C:\Users\Desktop\Tariffrr.pdf") End Sub Public Function GetTextFromPDF(ByVal PdfFileName As String) As String Dim oReader As New iTextSharp.text.pdf.PdfReader(PdfFileName) Dim sOut = "" For i = 1 To oReader.NumberOfPages Dim its As New iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy sOut &= iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(oReader, i, its) Dim adrRx As Regex = New Regex("(\d+\.\d{1,4})") Dim tarrifs As New List(Of String) For Each item As Match In adrRx.Matches(sOut.ToLower) If sOut.ToUpper().Contains("SUMMARY OF RATES AND CHARGES") Then tarrifs.Add(item.Value) sOut.ToLower().Contains("R1-Demand") End If Next Dim emailsString As String = Join(tarrifs.Distinct.ToArray, " ") TextBox1.Text = emailsString Next Return sOut End Function End Class