I had the same problem in the past.
I've used pdftk tool inside powershell
dir c:\ *.pdf | foreach-object {
$pdf = pdftk.exe $_.FullName dump_data
$NumberOfPages = [regex]::match($pdf,'NumberOfPages: (\d+)').Groups[1].Value
New-Object PSObject -Property @{
Name = $_.Name
FullName = $_.FullName
NumberOfPages = $NumberOfPages
}
} | select name,fullname,numberofpages | export-csv -notypeinformation d:\list.txt
After some test I realized that I had problems when I had protected pdfs.
Using itextsharp I solved them
[void][System.Reflection.Assembly]::LoadFrom("c:\itextsharp\itextsharp.dll")
gci -path c:\ *.pdf | foreach-object{
$itext = new-object itextsharp.text.pdf.PdfReader($_.fullname)
if (-not $itext.IsEncrypted() ) {
$pdf = pdftk.exe $_.FullName dump_data
$NumberOfPages = [regex]::match($pdf,'NumberOfPages: (\d+)').Groups[1].Value
New-Object PSObject -Property @{
Name = $_.Name
FullName = $_.FullName
NumberOfPages = $NumberOfPages
}
}
else {
New-Object PSObject -Property @{
Name = $_.Name
FullName = $_.FullName
NumberOfPages = "encrypted"
}
}
} |Select-Object name,fullname,numberofpages | export-csv -notypeinformation d:\list2.txt
Hope that it helps.
edit. Please note that great part of the script has been done by Shay Levy, a powershell guru :)