PowerShellでPDFファイルをテキスト化する

 PDFファイルが大量にあるため、中身を検索する方法がないか調べたときのメモ


 ・外部のdllは必須っぽい

 ・PowerShell単独や.NET Frameworkなどの利用だけではどうにもならない

ちょっと調べるだけでもiTextSharpが使えそうだったので利用する。


1.dllのダウンロードについて

「iTextSharp」「nuget」で検索して出てくるサイトで「Download package」をクリックしてダウンロードしたファイルの拡張子を「.nupkg」から「zip」に変換し、中身の「itextsharp.dll」を取り出して、右クリップ→プロパティで「許可する」にチェックを入れた



※後術するが最新版のバージョンではうまくいかない


2.ソースコード

# iTextSharpの読み込み

[System.Reflection.Assembly]::LoadFrom("c:\****\itextsharp.dll")


# pdfファイルの指定

$pdf1 = New-object iTextSharp.text.pdf.pdfreader("C:\****\Sample.pdf")


Write-Host($pdf1.NumberOfPages);

$intPageMax = $pdf1.NumberOfPages;

for($i=1;$i -le $intPageMax;$i++){

    $strText = [iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFrompage($pdf1,$i);

    Write-Host($strText.Replace("`n",""));

}

# 後処理

$pdf1.Close()


3.結果

 依存関係の読み込みがうまくいかなくて失敗・・・。ネットで調べていると海外のサイトで旧バージョンならうまく動くらしいとの情報を得たため、もう一度先ほどのパッケージのダウンロードサイトで「Full stats →」をクリックして、古いバージョンのものを取得してきた。


 5.5.7ぐらいのバージョンならうまく実行できた。

0 件のコメント:

コメントを投稿

PowerShellでPDFファイルをテキスト化する

 PDFファイルが大量にあるため、中身を検索する方法がないか調べたときのメモ  ・外部のdllは必須っぽい  ・PowerShell単独や.NET Frameworkなどの利用だけではどうにもならない ちょっと調べるだけでもiTextSharpが使えそうだったので利用する。 1....