Parsing PowerShell解析PDF并提取多行

Parsing PowerShell解析PDF并提取多行,parsing,pdf,powershell,line,next,Parsing,Pdf,Powershell,Line,Next,我使用iTextSharp在PDF中搜索关键字,并提取包含该关键字的任何行。我想做的不仅是提取带有关键字的行,而且还要提取后续行。 带关键字的行和下一行,带关键字的行和下两行,等等 我对此已经挂断了一段时间,尝试数组、哈希表、迭代器……它们都不能正常工作。感谢您的帮助。这是我一直使用的基本设计: $reader=新对象iTextSharp.text.pdf.pdfreader-ArgumentList anypdf.pdf for ($page = 1; $page -le $reader.Nu

我使用iTextSharp在PDF中搜索关键字,并提取包含该关键字的任何行。我想做的不仅是提取带有关键字的行,而且还要提取后续行。 带关键字的行和下一行,带关键字的行和下两行,等等

我对此已经挂断了一段时间,尝试数组、哈希表、迭代器……它们都不能正常工作。感谢您的帮助。这是我一直使用的基本设计: $reader=新对象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中的每一行创建一个哈希表,那将是非常好和高效的。

这就是
Select String
的发明目的

for ($page = 1; $page -le $reader.NumberOfPages; $page++) {
  [char[]]$reader.GetPageContent($page) -join "" -split "`n" `
    | Select-String $searchstring -Context 0,2 `
    | % {
        $_ -replace "^\[\(|\)\]TJ$", "" `
           -split "\)\-?\d+\.?\d*\(" -join "" `
           -replace "\\([\S])", $_.Matches.Value
      }
}
我不太明白你在那里做的所有拆分、连接和替换,所以你可能需要调整


此外,上面的内容不包括after上下文,因为我不知道您希望它去哪里。它可以通过
$\uu.Context.PostContext

访问。感谢您的回复,请原谅我的无知……但是您是如何获得代码中的第二行的?它对找到的第一个匹配项有效,但对第二个不起作用。你是指后上下文行吗?如下所示:
$\u.Context.PostContext
。对不起,我以前忘了包括那一点信息。