Я использую iTextSharp для поиска в PDF-файле ключевого слова и извлечения любых строк, содержащих это ключевое слово. Я бы хотел извлечь не только строки с ключевым словом, но и последующие строки. Строка с ключевым словом и следующая строка, Строка с ключевым словом и следующие 2 строки и т. Д.
Я некоторое время зацикливался на этом, пробовал массивы, хеш-таблицы, итераторы ... ни один из них не работает правильно. Любая помощь приветствуется. Это базовый дизайн, с которым я работал: $ reader = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList anypdf.pdf
for ($page = 1; $page -le $reader.NumberOfPages; $page++) {
$lines = [char[]]$reader.GetPageContent($page) -join "" -split "`n"
foreach ($line in $lines) {
if ($line -match $searchstring) {
$line = $line -replace "^\[\(|\)\]TJ$", "" -split "\)\-?\d+\.?\d*\(" -join ""
$line = $line -replace "\\([\S])", $matches[1]
Write-host $line
}
}
}
Я не могу поверить в логику, которая удаляет нежелательные символы из PDF, и, возможно, поэтому я еще не понял этого. Приведенный выше код дает мне любую строку, содержащую ключевое слово. Проблема, похоже, в том, что PDF-файл разделен на страницы, и эти страницы разбиты на строки (каждая из которых представляет собой массив символов). Было бы хорошо и эффективно, если бы я мог просто создать хеш-таблицу для каждой строки в PDF с самого начала.