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 件のコメント:
コメントを投稿