我正在使用 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 中的每一行创建一个哈希表,那将是很好和高效的。