Puoi provare a farlo con pdfinfo
(qui su Fedora nel poppler-utils
pacchetto). pdfinfo
ottiene informazioni sul file PDF dal suo dizionario, quindi se lo trova il file dovrebbe essere ok
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
Il mio strumento preferito per controllare i PDF è qpdf
. qpdf
ha un --check
argomento che fa bene a trovare problemi nei PDF.
Controlla un singolo PDF con qpdf
:
qpdf --check test_file.pdf
Controlla tutti i PDF in una directory con qpdf
:
find ./directory_to_scan/ -type f -iname '*.pdf' \( -exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \; -o -exec echo "{}": FAILED \; \)
Spiegazione del comando:
-
find ./directory_to_scan/ -type f -iname '*.pdf'
Trova tutti i file con estensione '.pdf' -
-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
Eseguiqpdf
per ogni file trovato e invia tutto l'output a/dev/null
. Stampa anche il nome del file seguito da ':OK' se restituisce lo stato diqpdf
è 0 (cioè nessun errore) -
-o -exec echo "{}": FAILED \; \)
Questo viene eseguito se vengono rilevati errori:Print nome file seguito da ":FAILED"
Dove trovare qpdf
:
qpdf
ha i binari Linux e Windows disponibili su:https://github.com/qpdf/qpdf/releases. Puoi anche usare il tuo gestore di pacchetti preferito per ottenerlo. Ad esempio su Ubuntu puoi installare qpdf usando apt con il comando:
apt install qpdf