逐行解析PDF

时间:2013-08-19 12:12:13

标签: parsing powershell line itextsharp

我已经能够通过多种方式逐页解析PDF,最新的是这个(不是我的代码):

$reader = New-Object iTextSharp.text.pdf.pdfreader  -ArgumentList "oldy.pdf"

for ($page = 1; $page -le $reader.NumberOfPages; $page++)
{
    $strategy = new-object  'iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy'            
    $currentText = [iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage($reader, $page, $strategy);
    [string[]]$Text += [system.text.Encoding]::UTF8.GetString([System.Text.ASCIIEncoding]::Convert( [system.text.encoding]::default, [system.text.encoding]::UTF8, [system.text.Encoding]::Default.GetBytes($currentText)));
}

我在这里发现了一条帖子,建议使用LocationTextExtractionStrategy,然后将每一行拆分为'\ n' 但是,我承认这里的.NET代码让我感到困惑,我不知道如何修改它来解析字符串。

有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:1)

只有第一个实验,但它按预期工作:

# Download http://sourceforge.net/projects/itextsharp/

Add-Type -Path itextsharp.dll

$reader = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList MyFile.pdf

for ($page = 1; $page -le $reader.NumberOfPages; $page++)
{
  # extract a page and split it into lines
  $text = [iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage($reader,$page).Split([char]0x000A)

  Write-Host "Page $($page) contains $($text.Length) lines. This is line 5:"
  Write-Host $text[4]

  #foreach ($line in $text)
  #{
  #  any tasks
  #}
}

$reader.Close()