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-utils
paquete) 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
pdfinfo
opdftotext
...Este es mi guion
fuente
Mi herramienta de elección para revisar archivos PDF es
qpdf
.qpdf
tiene un--check
argumento 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' \;
Ejecuteqpdf
para 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 retornoqpdf
es 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
:qpdf
tiene 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 --check
no 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 comopdfinfo
ypdftk
tampoco, 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
pdfinfo
opdftotext
no 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_profile
y 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
valid
oinvalid
:Tenga en cuenta que esto se ejecutó en Mac OS X, pero supongo que funciona igual con cualquier entorno Bash basado en Unix.
fuente