J'ai de nombreux fichiers PDF sur un dossier.
Est-il possible de vérifier si un ou plusieurs fichiers sont corrompus (zéro page, ou téléchargements inachevés) en utilisant la ligne de commande, sans avoir besoin de les ouvrir un par un?
Peut-être que courir pdfinfo
(ici sur Fedora dans le poppler-utils
paquet) donne un indice?
La plupart des informations sur un fichier PDF se trouvent dans le dictionnaire à la fin, donc s'il le trouve, cela devrait être OK. Je ferais quelque chose comme:
for f in *.pdf; do
if pdfinfo "$f" > /dev/null; then
: Nothing
else
echo "$f" is broken
fi
done
pdfinfo
oupdftotext
...C'est mon script
la source
Mon outil de choix pour vérifier les PDF est
qpdf
.qpdf
a un--check
argument qui fait bien de trouver des problèmes dans les PDF.Vérifiez un seul PDF avec
qpdf
:Vérifiez tous les PDF dans un répertoire avec
qpdf
:Explication de la commande:
find ./directory_to_scan/ -type f -iname '*.pdf'
Trouver tous les fichiers avec l'extension '.pdf'-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
Exécutezqpdf
pour chaque fichier trouvé et dirigez toutes les sorties vers/dev/null
. Imprime également le nom de fichier suivi de ': OK' si le statut de retourqpdf
est 0 (c.-à-d. Pas d'erreur)-o -exec echo "{}": FAILED \; \)
Ceci est exécuté si des erreurs sont trouvées: Imprimer le nom du fichier suivi de ": FAILED"Où trouver
qpdf
:qpdf
a des binaires Linux et Windows disponibles sur: https://github.com/qpdf/qpdf/releases . Vous pouvez également utiliser le gestionnaire de paquets de votre choix pour l'obtenir. Par exemple sur Ubuntu, vous pouvez installer qpdf en utilisant apt avec la commande:la source
qpdf --check
ne détecte pas les métadonnées multipliées définies, qui sont incorrectes car elles sont gérées différemment par différents outils. J'ai signalé un bug . D'autres outils tels quepdfinfo
etpdftk
ne le font pas non plus, mais ils ne prétendent pas vérifier la structure PDF.Je me suis obtenu une réponse:
Les fichiers PDF contenant des erreurs afficheront des erreurs.
la source
ls
: mywiki.wooledge.org/ParsingLsfind (1)
. :-)Toutes les méthodes utilisant
pdfinfo
oupdftotext
n'ayant pas fonctionné pour moi. En fait, ils ne cessaient de me donner de faux positifs et créaient parfois des fichiers dont je n'avais pas besoin.Ce qui a fonctionné était JHOVE .
Installation:
Installez le pot à partir du lien ci-dessus et mettez à jour votre variable d'environnement PATH avec cette commande:
Actualisez chaque terminal avec
source ~/.bash_profile
et vous êtes prêt à commencer à l'utiliser à l'échelle du système.Utilisation de base:
Vous obtiendrez beaucoup d'informations sur le pdf - plus que la plupart des gens n'en ont probablement besoin.
Bash One-Liner:
revient simplement
valid
ouinvalid
:Notez que cela a été exécuté sur Mac OS X, mais je suppose que cela fonctionne de la même manière avec n'importe quel environnement Bash basé sur Unix.
la source