Tengo muchos archivos PDF en una carpeta.
¿Es posible verificar si uno o más archivos están dañados (cero páginas o descargas inacabadas) usando la línea de comando, sin necesidad de abrirlos uno por uno?
¿Quizás correr pdfinfo(aquí en Fedora en el poppler-utilspaquete) da una pista?
La mayor parte de la información en un archivo PDF está en el diccionario al final, por lo que si lo encuentra, debería estar bien. Haría algo como:
for f in *.pdf; do
if pdfinfo "$f" > /dev/null; then
: Nothing
else
echo "$f" is broken
fi
done
pdfinfoopdftotext...Este es mi guion
fuente
Mi herramienta de elección para revisar archivos PDF es
qpdf.qpdftiene un--checkargumento que hace bien en encontrar problemas en archivos PDF.Verifique un solo PDF con
qpdf:Verifique todos los archivos PDF en un directorio con
qpdf:Explicación del comando:
find ./directory_to_scan/ -type f -iname '*.pdf'Buscar todos los archivos con la extensión '.pdf'-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;Ejecuteqpdfpara cada archivo encontrado y canalice todos los resultados a/dev/null. Imprima también el nombre del archivo seguido de ': OK' si el estado de retornoqpdfes 0 (es decir, sin errores)-o -exec echo "{}": FAILED \; \)Esto se ejecuta si se encuentran errores: imprimir el nombre del archivo seguido de ": FAILED"Dónde conseguirlo
qpdf:qpdftiene binarios de Linux y Windows disponibles en: https://github.com/qpdf/qpdf/releases . También puede usar su administrador de paquetes de elección para obtenerlo. Por ejemplo, en Ubuntu puedes instalar qpdf usando apt con el comando:fuente
qpdf --checkno detecta metadatos definidos de forma múltiple, que son incorrectos ya que son manejados de manera diferente por diferentes herramientas. He reportado un error . Otras herramientas comopdfinfoypdftktampoco, pero no pretenden verificar la estructura del PDF.Me conseguí una respuesta:
Los PDF con errores mostrarán errores.
fuente
ls: mywiki.wooledge.org/ParsingLsfind (1). :-)Todos los métodos que usan
pdfinfoopdftotextno me han funcionado. De hecho, me seguían dando falsos positivos y, a veces, creaban archivos que no necesitaba.Lo que funcionó fue JHOVE .
Instalación:
Instale el jar desde el enlace anterior y actualice su variable de entorno PATH con este comando:
Actualice cada terminal con
source ~/.bash_profiley estará listo para comenzar a usarlo en todo el sistema.Uso Básico:
Obtendrá mucha información sobre el pdf, más de lo que la mayoría de la gente probablemente necesita.
Bash One-Liner:
simplemente devuelve
validoinvalid:Tenga en cuenta que esto se ejecutó en Mac OS X, pero supongo que funciona igual con cualquier entorno Bash basado en Unix.
fuente