1

コンテンツを抽出したい PDF ドキュメントがあります。私が抱えている問題はこれです... IMEI キーワードを検索すると見つかりますが、ループの次の項目である実際の IMEI 値が必要です。

PDF では、値は次のようになります: IMEI 90289393092

以下のスクリプトで値を返します: -0.1 -8.8 9.8 -0.1 446.7 403.9 Tm (IMEI:) Tj

値が欲しいだけです:90289393092

私が使用しているスクリプト:

Add-Type -Path .\itextsharp.dll
$reader = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList "$pwd\PDF\DOC001.pdf"

for ($page = 1; $page -le $reader.NumberOfPages; $page++) {
 $lines = [char[]]$reader.GetPageContent($page) -join "" -split "`n"
 foreach ($line in $lines) {
  if ($line -match "IMEI") { 
   $line = $line -replace "\\([\S])", $matches[1]
   $line -replace "^\[\(|\)\]TJ$", "" -split "\)\-?\d+\.?\d*\(" -join ""

  }
 }
}
4

1 に答える 1

4

this is the way for using itextsharp.dll and read a pdf as plain text:

Add-Type -Path .\itextsharp.dll
$reader = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList c:\ps\a.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)));      
}
$Reader.Close();

And this can be the regex you need but I haven't tested it

[regex]::matches( $text, '(?<=IMEI\s+)(\d+)(?=\s+)' ) | select -expa value
于 2013-03-28T15:50:01.173 に答える