Вот обходной путь, который я использовал. Я заново инициирую объект стратегии и объект синтаксического анализа на каждой странице, а также выводю местоположения, соответствующие шаблону Regex на страницу. Таким образом, я могу использовать собственный счетчик pg, хотя l oop вместо того, который [не] задан методом .PageNumber:
Private Sub Main() 'the main processing routine
'Sub assumes that the PDF document (pdfDoc) and the output file (CoordFile) --both module level object-- are open and available
Dim Location As iText.Kernel.Pdf.Canvas.Parser.Listener.IPdfTextLocation
Dim TextString As String
Dim L, B, W, H As Single ' Left, bottom, width & height of the rectangle containing the extracted text
Dim pg As Integer = 0 'number of current page, number of matches
Dim N As Integer = 0
Do While pg < pdfDoc.GetNumberOfPages 'loop thru document pages
pg += 1
Dim strategy As New iText.Kernel.Pdf.Canvas.Parser.Listener.RegexBasedLocationExtractionStrategy(RegexPattern) 'extraction strategy (RegexPattern is a module variable)
Dim Parser As iText.Kernel.Pdf.Canvas.Parser.PdfCanvasProcessor = New Kernel.Pdf.Canvas.Parser.PdfCanvasProcessor(strategy)
Parser.ProcessPageContent(pdfDoc.GetPage(pg)) 'parse page
If strategy.GetResultantLocations.Count > 0 Then
For Each Location In strategy.GetResultantLocations
TextString = Location.GetText
L = Location.GetRectangle.GetLeft
B = Location.GetRectangle.GetBottom
W = Location.GetRectangle.GetWidth
H = Location.GetRectangle.GetHeight
CoordFile.WriteLine(TextString & Chr(9) & L & Chr(9) & B & Chr(9) & W & Chr(9) & H & Chr(9) & pg)
N += 1
Next Location
End If
strategy.GetResultantLocations.Clear() 'dispose loclist
Loop
'Finished processing
pdfDoc.Close()
CoordFile.Close() 'close output file
End Sub
... не элегантно, но работает ...