Obtener el número de páginas de un PDF

nullReciéntemente he estado procesando un alto volumen de documentos PDF mediante un script bash y, como el volumen de información era alto, tan bien lo era la posibilidad de que algo no fuese del todo bien 😦

A grandes rasgos se utilizaba el comando pdfimages (con el parámetro -j) para extraer las imágenes almacenadas en este formato puesto que el contenido de los mismos consistía en el resultado de escanear ciertos documentos.

Caso no contemplado

Cuando dichos documentos no eran escaneados directamente sino que eran generados ex profeso, o bien contaban con capas, el riesgo de no obtener una imagen por página del PDF crecía significativamente.

Solución al problema

Por fortuna siempre existe una solución aceptable a cada problema y esta ocasión no iba a ser una excepción.

Para evitar el problema nada mejor que comparar el número de páginas del documento con los ficheros que se obtienen de lanzar el comando pdfimages (si no coinciden estamos ante uno de esos casos “especiales”).

Como me costó algo de tiempo encontrar la forma de contar el número de paǵinas de un documento de Acrobat he optado por compartirlo con vosotros por si a alguien le resulta de utilidad o vuelvo a necesitarlo otro día que, conforme pasa el tiempo (y crecen los artículos en el blog), más me sorprendo buscando soluciones en esta “libreta con apuntes digitales” o, lo que es peor: buscando algo en Internet y viendo que el Informático de Guardia ya publicó una solución para ello :O

pdftk UN_FICHERO_CUALQUIERA.pdf dump_data output | grep -i Num | awk -F’: ‘ ‘{ print $2 }’

Donde

  1. UN_FICHERO_CUALQUIERA.PDF es el fichero del que deseamos obtener el número de páginas
  2. grep es para filtrar el campo que realmente nos interesa (si quitamos este filtro y el de awk podemos obtener otros datos de interés del documento PDF)
  3. awk es para centrarnos en el número (la información que devuelve pdftk está compuesta por una serie de campos con el formato NOMBRE : VALOR por lo que buscamos con awk el “:” y mostramos VALOR, de ahí el $2)

Conclusión

Espero que a alguien más le sea de utilidad tanto el comando pdftk (con el parámetro dump_data) para mostrar información de un pdf como pdfimages para aquellos que quieran poder extraer imágenes de ellos.

15 comentarios en “Obtener el número de páginas de un PDF

  1. fer dijo:

    Qué haríamos sin el maravilloso pdftk jeje, si es que vale su peso en oro, aunque ahora que lo pienso pesa poco jajaja. Muy útil como siempre, lo pondré en mi lista de cosas por hacer que cada día agranda más y más ;). Saludos.

  2. Anónimo dijo:

    Hola,

    Otra variante, quizás algo más rápida con ficheros grandes, es utilizar pdfinfo (poppler-utils|xpdf-utils)

    pdfinfo fichero.pdf | grep ‘Pages’ | sed ‘s/^…………….//’

    Saludos,

  3. Rolo dijo:

    Buen dia Esa sentencia pdftk UN_FICHERO_CUALQUIERA.pdf dump_data output | grep -i Num | awk -F’: ‘ ‘{ print $2 }’ es un comando en DOS, no se indica, Quedo atento. Gracias!

  4. Gracias por el truco, me ha venido de perlas. Como curiosidad he medido tiempos y me sale que, con 2597 pdf’s y un total de 12347 páginas con pdfinfo:

    real 0m24.820s
    user 0m33.946s
    sys 0m13.281s

    y con tu método

    real 19m59.755s
    user 19m19.776s
    sys 0m52.467s

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s