Puedes intentar hacerlo con pdfinfo
(aquí en Fedora en el poppler-utils
paquete). pdfinfo
obtiene información sobre el archivo PDF de su diccionario, por lo que si lo encuentra, el archivo debería estar bien
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
Mi herramienta preferida para verificar archivos PDF es qpdf
. qpdf
tiene un --check
argumento que hace bien para encontrar problemas en archivos PDF.
Comprobar un solo PDF con qpdf
:
qpdf --check test_file.pdf
Comprueba todos los archivos PDF en un directorio con qpdf
:
find ./directory_to_scan/ -type f -iname '*.pdf' \( -exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \; -o -exec echo "{}": FAILED \; \)
Explicación del comando:
-
find ./directory_to_scan/ -type f -iname '*.pdf'
Encuentra todos los archivos con extensión '.pdf' -
-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
Ejecutarqpdf
para cada archivo encontrado y canalice toda la salida a/dev/null
. También imprima el nombre del archivo seguido de ':OK' si el estado de retorno esqpdf
es 0 (es decir, sin errores) -
-o -exec echo "{}": FAILED \; \)
Esto se ejecuta si se encuentran errores:Imprima el nombre del archivo seguido de ":FALLIDO"
Dónde conseguir qpdf
:
qpdf
tiene binarios de Linux y Windows disponibles en:https://github.com/qpdf/qpdf/releases. También puede usar el administrador de paquetes de su elección para obtenerlo. Por ejemplo, en Ubuntu puede instalar qpdf usando apt con el comando:
apt install qpdf