Jawaban:
Mungkin berjalan pdfinfo(di sini di Fedora dalam poppler-utilspaket) memberikan petunjuk?
Sebagian besar informasi pada file PDF ada di kamus pada akhirnya, jadi jika ditemukan itu harus OK. Saya akan melakukan sesuatu seperti:
for f in *.pdf; do
if pdfinfo "$f" > /dev/null; then
: Nothing
else
echo "$f" is broken
fi
done
pdfinfoatau pdftotext...
Ini skrip saya
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
Alat pilihan saya untuk memeriksa PDF adalah qpdf. qpdfmemiliki --checkargumen yang berfungsi baik untuk menemukan masalah dalam PDF.
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 \; \)
Penjelasan Perintah:
find ./directory_to_scan/ -type f -iname '*.pdf'
Temukan semua file dengan ekstensi '.pdf'
-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
Jalankan qpdfuntuk setiap file yang ditemukan dan pipa semua output /dev/null. Juga cetak nama file diikuti oleh ': OK' jika status pengembalian qpdfadalah 0 (yaitu tidak ada kesalahan)
-o -exec echo "{}": FAILED \; \) Ini dijalankan jika ditemukan kesalahan: Cetak nama file diikuti oleh ": GAGAL"
qpdf:qpdfmemiliki binari Linux dan Windows yang tersedia di: https://github.com/qpdf/qpdf/releases . Anda juga bisa menggunakan manajer paket pilihan Anda untuk mendapatkannya. Sebagai contoh di Ubuntu Anda dapat menginstal qpdf menggunakan apt dengan perintah:
apt install qpdf
Saya sendiri mendapat jawaban:
for x in *.pdf; do echo "$x"; pdfinfo "$x" | grep Pages; done
PDF dengan kesalahan akan menunjukkan kesalahan.
ls: mywiki.wooledge.org/ParsingLs
find (1). :-)
Semua metode menggunakan pdfinfoatau pdftotextbelum berfungsi untuk saya. Bahkan mereka terus memberi saya positif palsu dan terkadang membuat file yang tidak saya butuhkan.
Apa yang berhasil adalah JHOVE .
Instalasi:
Pasang tabung dari tautan di atas dan perbarui variabel lingkungan PATH Anda dengan perintah ini:
echo "export PATH=\$PATH:/REPLACE_WITH/YOUR/PATH_TO/jhove/" >> ~/.bash_profile
Refresh setiap terminal dengan
source ~/.bash_profiledan Anda baik untuk mulai menggunakannya dengan sistem luas.
Penggunaan Dasar:
jhove -m pdf-hul someFile.pdf
Anda akan mendapatkan banyak info tentang pdf - lebih dari yang mungkin dibutuhkan kebanyakan orang.
Bash One-Liner:
Cukup mengembalikan validatau invalid:
if [[ $(jhove -m pdf-hul someFile.pdf | grep -a "Status:") == *"Well-Formed and valid"* ]]; then echo "valid"; else echo "invalid"; fi;
Perhatikan bahwa ini dijalankan pada Mac OS X tapi saya menganggap itu berfungsi sama dengan lingkungan Bash berbasis Unix.