web-dev-qa-db-fra.com

Vérifiez si les fichiers PDF sont corrompus à l'aide de la ligne de commande sur Linux

J'ai beaucoup PDF fichiers sur un dossier.

Est-il possible de vérifier si un ou plusieurs fichiers sont corrompus (zéro pages ou téléchargements inachevés) à l'aide de la ligne de commande, sans avoir besoin de les ouvrir une par une?

18
Kokizzu
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
13
schoetbi

Mon outil de choix pour vérifier les PDF est qpdf . qpdf a un --check argument qui fait bien trouver des problèmes dans les PDF.

Vérifiez un seul PDF avec qpdf:

qpdf --check test_file.pdf

Vérifiez tous les PDF dans un répertoire avec qpdf:

find ./directory_to_scan/ -type f -iname '*.pdf' \( -exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \; -o -exec echo "{}": FAILED \; \)

Explication de la commande:

  • find ./directory_to_scan/ -type f -iname '*.pdf' Trouvez tous les fichiers avec '.pdf' extension

  • -exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \; Exécuter qpdf pour chaque fichier trouvé et tuyer toutes les sorties à /dev/null. Également imprimer le nom de fichier suivi de ': OK' si l'état de retour de qpdf est 0 (c'est-à-dire aucune erreur)

  • -o -exec echo "{}": FAILED \; \) Ceci est exécuté si des erreurs sont trouvées: Imprimer le nom de fichier suivi de ": échoué"


Où obtenir qpdf:

qpdf a les binaires Linux et Windows disponibles à l'adresse suivante: - https://github.com/qpdf/qpdf/relases . Vous pouvez également utiliser votre responsable de votre forfait de choix pour l'obtenir. Par exemple sur Ubuntu, vous pouvez installer QPDF à l'aide de APT avec la commande:

apt install qpdf
7
moo

Je me suis eu une réponse:

for x in *.pdf; do echo "$x"; pdfinfo "$x" | grep Pages; done

Les PDF avec des erreurs montreront des erreurs.

4
Kokizzu