2017-11-14 17 views
-2

いくつかのデータを持つ.pdfファイルを読んでみたい。 PowerShellを使用して特定の列から完全なデータを抽出するにはどうすればよいですか?私は、iText 5 .NET(別名iTextSharp)を使ってpdfデータを抽出しています。powershellのpdfから列賢明なデータを抽出するには?

これは、行全体を抽出し、私の現在のコードです:

$reader = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList testPOC.pdf 
$page = 2 
$text = [iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage($reader, $page).Split([char]0x000A) 
Write-Host $text[5] 

出力は次のように示されている:

 
ID   Working Agent Assistant Name  Plan   Gender Year Amount  Comm.% Split% Commission 
4169985061 Paul E. Ted  Alskd, Ols  fhghslhshsl+(0sdhsk) M  12 $1,234.00 0.45% 100.00% $32.78 

は、どのように私は例えば(1つの列からのデータのみを取得することができますからのみ。給与コラム)?

+1

最も単純なアプローチは、各行をスペースで分割し、関連するフィールドを選択することです。 '$ line.Split( '')[4]'。さらに役立つようにするには、PDFから抽出したテキストの代表サンプルを提供する必要があります。 –

+0

@AnsgarWiechers私はそのアプローチを試みましたが、問題は、名前の列の長さとパターンについて予測できないことです。最初の文字、中間の文字、または姓と名が含まれている可能性があります。 –

+0

私はそれほど疑わしい。そのため、PDFから抽出したテキストの代表サンプルを提供する必要があると述べました。テキストの構造を知らなくても、テキストからデータを解析する方法を考案することはできません。 –

答えて

0

私たちはiTextSharpエキスパートでない限り、$ textというデータの種類がわからないので、これは答えには驚くばかりです。あなたが入力することによって、私たちのためにそれを見つけることができます:

$text.gettype() 

を、それが出力に現れるの方法から、ほとんどそれがPSCustomObjectだと思われます。もしそうなら、このようなアプローチが有効でしょう:

$text | select-object ID, Commission 

あなたの出力にSalaryが表示されなかったので私はCommissionを使いました。私は文脈のためにIDを付け加えました。

注:実際の答えは、iTextSharpを使用し、$ textのデータ型を知らされていない人がいるのを待つ必要があります。それは長い待っている可能性があります。

+0

$ textのデータ型は私の場合は文字列です –

+0

.Splitは文字列の配列に分割しますか? –

+0

はい、それは新しい行に基づいてテキストの全体の束を壊します。テキストは行ごとに表示されます –

関連する問題