¿Cómo consultar el tamaño de página pdf desde la línea de comando?


35

Para las secuencias de comandos, necesito obtener las dimensiones de la página de un archivo PDF (en mm).

pdfinfo solo lo imprime en 'pts', por ejemplo:

Page size:      624 x 312 pts

¿Qué debo usar?

O qué unidad es 'pts' de todos modos, en caso de que quiera convertirlos ...


2
Punto en Wikipedia
Mat

¿De qué página querías el tamaño? El tamaño legal de la cubierta exterior? ¿El tamaño del folleto "esta página está en blanco intencionalmente"? El tamaño de letra doble páginas?
Ignacio Vazquez-Abrams

Respuestas:


31

La unidad 'pts' utilizada por pdfinfodenota un punto PostScript. Un punto PostScript se define en términos de una pulgada y una resolución de 72 puntos por pulgada:

A fines de la década de 1980 hasta la década de 1990, el punto tradicional fue suplantado por el punto de publicación de escritorio (también llamado punto PostScript), que se definió como 72 puntos por pulgada ( 1 punto = 1⁄72 pulgadas = 25.4⁄72 mm = 0.352 ¯7 mm [≙ 0.3528 mm ]).

El manual de gvcontiene una lista de formatos de papel comunes especificados en puntos PostScript.


1
en formatos de papel comunes: a pdfinfoveces me da el formato de papel (como Page size: 595.28 x 841.89 pts (A4)) - Me pregunto si lo hace para una lista de tamaños de página que conoce.
njsg

2
Un punto es en realidad 0,352777777 ... mm, por lo que 0,3528 mm es una aproximación más cercana.
cjm

15

No es la forma más fácil, pero dada imagemagick y unitstambién podría usar

$ identify -verbose some.pdf | grep "Print size" 
Print size: 8.26389x11.6944

para encontrar el tamaño de la página en pulgadas (esto puede arrojar varios resultados si el PDF usa diferentes dimensiones) y luego convertir los números de esta manera:

$ units -t '8.26389 inch' 'mm'
  209.90281

Lo que significa que 8.26 pulgadas son 209.9 mm (usé un PDF A4 para esto).


1
Cuando tengo identifyun PDF en OS X, no obtengo ningún resultado.
David Moles

muy tarde, pero identifyrequiere ImageMagick
desestimado el

6

Encontré el mismo problema y llegué a la siguiente solución. No me metí en la documentación de cómo se construyen los archivos PDF, solo comparé dos archivos PDF vacíos con diferentes tamaños de página.

Parece que los archivos PDF tienen todo tipo de atributos incrustados entre "<<" y ">>". Descubrí que la información del tamaño de la página está en texto plano y se puede encontrar con una simple búsqueda de expresiones regulares.

Esto puede o no ser cierto para todos los archivos PDF, pero funcionó en todo lo que pude encontrar de diferentes fuentes.

La parte relevante puede verse como cualquiera de estos para una página de tamaño A4:

/MediaBox [0 0 595 842]
/MediaBox[0 0 595 842]
/MediaBox[ 0 0 595.32 841.92]

Significa [0 0 ancho alto] así que aquí está mi solución súper cojo pero funcional para extraer esto:

cat test.pdf | egrep -ao "/MediaBox ?\[ ?[0-9]+ [0-9]+ [0-9]+(\.[0-9]+)? [0-9]+(\.[0-9]+)?\]" | head -1

Simplemente cambie test.pdf a su archivo.


1
tenga en cuenta que los valores devueltos por esto están en "puntos", no en mm, píxeles o pulgadas
descontinuado el

0

Utilicé la respuesta maxchlepzigs para calcular el mm directamente:

$ pdfinfo test.pdf | grep "Page size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=0.3528 '{print $1*x}'

esto también funciona con la respuesta de Alex Knaufs, pero la identificación lleva mucho más tiempo que pdfinfo y requiere imagemagick, pero lo bueno es que puedes usar esto para múltiples archivos (es decir, haciendo un CD en un directorio y usando *.pdf):

$ identify -verbose some.pdf | grep "Print size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=25.4 '{print $1*x}'

El segundo grepcomando obtiene los valores de dos puntos / pulgada. Estoy bastante seguro de que puede omitir la expresión regular grep y hacerlo directamente con awk, pero no pude resolverlo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.