Jawaban:
Mungkin berjalan pdfinfo
(di sini di Fedora dalam poppler-utils
paket) 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
pdfinfo
atau 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
. qpdf
memiliki --check
argumen 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 qpdf
untuk setiap file yang ditemukan dan pipa semua output /dev/null
. Juga cetak nama file diikuti oleh ': OK' jika status pengembalian qpdf
adalah 0 (yaitu tidak ada kesalahan)
-o -exec echo "{}": FAILED \; \)
Ini dijalankan jika ditemukan kesalahan: Cetak nama file diikuti oleh ": GAGAL"
qpdf
:qpdf
memiliki 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 pdfinfo
atau pdftotext
belum 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_profile
dan 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 valid
atau 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.