¿Cómo contar páginas en múltiples archivos PDF?

12

Acabo de recibir un libro de texto en formato PDF compuesto por unos 20 archivos PDF separados (por capítulo) con nombres casi regulares. ¿Hay alguna manera de contar las páginas del libro sin abrir cada archivo (o pasar por las propiedades)?

[la solución puede ser para Windows o Ubuntu]

ysap
fuente
¿Tienes Adobe Acrobat?
wizlog
¿Desea el recuento de páginas para cada archivo PDF y / o el libro completo?
Franck Dernoncourt
@FranckDernoncourt - gracias. La pregunta se hizo hace unos 7 años. Si tiene una solución para cualquiera de las formas que mencionó, ¿por qué no agrega una respuesta aquí, para que los futuros usuarios que investiguen este problema puedan consultar?
ysap

Respuestas:

19

Usar pdfinfoesto es lo mejor que se me ocurre: para imprimir la cantidad de páginas por archivo:

for i in *.pdf; do echo $i && pdfinfo "$i" | grep "^Pages:"; done

Para imprimir la suma de todas las páginas en todos los archivos:

for i in *.pdf; do pdfinfo "$i" | grep "^Pages:"; done | awk '{s+=$2} END {print s}'

En Ubuntu, pdfinfoestá contenido en el paquete poppler-utils. Para instalarlo, use:

sudo apt-get install poppler-utils

En Windows, puede usar cygwin. pdfinfoEstá contenido en el paquete poppler.

Der Hochstapler
fuente
+1 pdfinfo es exactamente lo que estaba buscando. Lo necesito para el recuento de páginas en mi paquete de emulación de impresión dúplex.
Joe
Tuve que agregar el indicador --text al comando grep, porque por alguna razón pdfinfo devolvió algo que grep interpretó como un archivo binario. Entonces grep --text "^ Pages:", en caso de que alguien más tenga el mismo problema.
KIAaze
4

Sé que es demasiado tarde, pero acabo de encontrar una solución mejor y más simple para esto.

Descargue e instale desde sourceforge "pdf split and merge"

Coloque todos sus archivos en él, y en la pantalla genera un informe similar a una hoja de cálculo sobre el número de páginas e información de cada uno.

Seleccione eso, copie, pegue en Excel o OpenCalc, lo tiene.

usuario339697
fuente
4

Hice una aplicación solo para esto, está escrita en Java, por lo que funciona en todos los sistemas operativos. Compruébalo aquí:

https://github.com/hamiltino/multiple-pdf-counter/releases

Es mejor ejecutar la aplicación desde la terminal ( java -jar) para asegurarse de que funcione correctamente.

Coloque el archivo jar en el directorio en el que desea obtener el recuento de páginas de todos los archivos PDF. También pasará por las subcarpetas, no es necesario colocar todos los archivos PDF donde está el archivo jar, ya que pasará por las subcarpetas donde coloca el archivo archivo jar. Haga doble clic en el archivo jar, puede tomar algún tiempo si hay muchos archivos PDF, eventualmente generará un archivo txt en el mismo directorio del archivo jar y tendrá el recuento de páginas dentro.

HashTables
fuente
Buena idea. Serían buenas mejoras: 1) abrir que es solo la línea de comandos (sin interfaz de usuario), y 2) generar el tamaño de página de cada archivo, junto con el total
raider33
1

En Adobe Acrobat Pro, vaya a archivo > crear PDF > combinar archivos en un solo PDF . Luego agregue archivos y seleccione los archivos que desee. Haga clic en combinar y vea cuántas páginas hay en el PDF final.

wizlog
fuente
Gracias @wizlog: esto realmente requiere el software completo (y costoso), ¿no?
ysap
Acabo de notar tu comentario sobre la pregunta. No, no lo tengo.
ysap
1

Hola, no sé cómo puedes hacerlo en Windows, pero en Linux Bash debería funcionar con esto

PDFS = `ls * .pdf`
contador = 0
para i en $ PDFS
hacer
   ((counter + = `pdfinfo internship_report.pdf | sed -n 's | Páginas: [^ 0-9] * \ ([0-9] * \). * | \ 1 | p'`))
hecho
echo $ counter

saludos cordiales kenny

phschoen
fuente
Gracias Kenny Esto puede funcionar si el nombre de archivo escaneara los archivos. Votado de todos modos.
ysap
0

Otro enfoque con parallely expr(debería ser un poco más rápido en máquinas multiprocesador):

expr $( echo -n 0; parallel "pdfinfo {} |sed -n 's/Pages: */ + /p'" ::: *pdf|tr '\n' ' ')
Matteo Gamboz
fuente