Anda dapat mencoba melakukannya dengan pdfinfo
(di sini di Fedora di poppler-utils
kemasan). pdfinfo
mendapatkan informasi tentang file PDF dari kamusnya, jadi jika ditemukan, file tersebut akan baik-baik saja
for f in *.pdf; do
if ! pdfinfo "$f" &> /dev/null; then
echo "$f" is broken
fi
done
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 cocok untuk menemukan masalah dalam PDF.
Periksa satu PDF dengan qpdf
:
qpdf --check test_file.pdf
Periksa semua PDF dalam direktori dengan 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' \;
Jalankanqpdf
untuk setiap file yang ditemukan dan kirimkan semua output ke/dev/null
. Cetak juga nama file diikuti dengan ':OK' jika mengembalikan statusqpdf
adalah 0 (artinya tidak ada kesalahan) -
-o -exec echo "{}": FAILED \; \)
Ini dijalankan jika kesalahan ditemukan:Cetak nama file diikuti dengan ":FAILED"
Di mana mendapatkan 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. Misalnya di Ubuntu Anda dapat menginstal qpdf menggunakan apt dengan perintah:
apt install qpdf