Yanıtlar:
Belki de pdfinfo
(burada Fedora'da poppler-utils
pakette) çalıştırmak bir ipucu veriyor?
Bir PDF dosyasındaki bilgilerin çoğu sözlükte bulunur, bu yüzden bulursa Tamam olmalıdır. Gibi bir şey yapardım:
for f in *.pdf; do
if pdfinfo "$f" > /dev/null; then
: Nothing
else
echo "$f" is broken
fi
done
pdfinfo
ister pdftotext
...
Bu benim senaryom
find . -iname '*.pdf' | while read -r f
do
if pdftotext "$f" &> /dev/null; then
echo "$f" was ok;
else
mv "$f" "$f.broken";
echo "$f" is broken;
fi;
done
PDF'leri kontrol etmek için tercih ettiğim araç qpdf
. PDF'lerde sorun bulmayı iyi yapan qpdf
bir --check
argüman var.
qpdf
:qpdf --check test_file.pdf
qpdf
:find ./directory_to_scan/ -type f -iname '*.pdf' \( -exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \; -o -exec echo "{}": FAILED \; \)
Komut Açıklaması:
find ./directory_to_scan/ -type f -iname '*.pdf'
'.Pdf' uzantılı tüm dosyaları bulun
-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
qpdf
Bulunan her dosya için
yürüt ve tüm çıktıları yönlendir /dev/null
. Ayrıca, dönüş durumu qpdf
0 ise dosya adını ve ardından ': OK' yazdırabilirsiniz (yani hata yok)
-o -exec echo "{}": FAILED \; \)
Hatalar bulunursa bu yürütülür: Dosya adını yazdırın ve ardından ": FAILED"
qpdf
:qpdf
hem Linux hem de Windows ikili dosyalarını şu adreste bulabilirsiniz: https://github.com/qpdf/qpdf/releases . İsterseniz paket yöneticinizi de kullanabilirsiniz. Örneğin Ubuntu üzerinde şu komutu kullanarak apt komutunu kullanarak qpdf yükleyebilirsiniz:
apt install qpdf
Kendime bir cevap aldım:
for x in *.pdf; do echo "$x"; pdfinfo "$x" | grep Pages; done
Hatalı PDF'ler hata gösterecektir.
ls
: mywiki.wooledge.org/ParsingLs
find (1)
. :-)
Benim için kullanılan pdfinfo
veya kullanmayan tüm yöntemler pdftotext
. Aslında bana yanlış pozitifler vermeye devam ettiler ve bazen ihtiyacım olmayan dosyalar yarattılar.
Kurulum:
Kavanozu yukarıdaki bağlantıdan yükleyin ve PATH ortam değişkeninizi bu komutla güncelleyin:
echo "export PATH=\$PATH:/REPLACE_WITH/YOUR/PATH_TO/jhove/" >> ~/.bash_profile
Her terminali yenileyin
source ~/.bash_profile
ve sistem genelinde kullanmaya başlayabilirsiniz.
Temel Kullanım:
jhove -m pdf-hul someFile.pdf
Pdf hakkında birçok bilgi alacaksınız - çoğu insanın muhtemelen ihtiyaç duyduğundan daha fazla.
Bash One-Liner:
Sadece şunu döndürür valid
veya invalid
:
if [[ $(jhove -m pdf-hul someFile.pdf | grep -a "Status:") == *"Well-Formed and valid"* ]]; then echo "valid"; else echo "invalid"; fi;
Bunun Mac OS X'te çalıştırıldığını, ancak Unix tabanlı Bash ortamlarıyla aynı şekilde çalıştığını varsayıyorum.