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 ...
Respuestas:
La unidad 'pts' utilizada por
pdfinfo
denota un punto PostScript. Un punto PostScript se define en términos de una pulgada y una resolución de 72 puntos por pulgada:El manual de
gv
contiene una lista de formatos de papel comunes especificados en puntos PostScript.fuente
pdfinfo
veces me da el formato de papel (comoPage size: 595.28 x 841.89 pts (A4)
) - Me pregunto si lo hace para una lista de tamaños de página que conoce.No es la forma más fácil, pero dada
imagemagick
yunits
también podría usarpara 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:
Lo que significa que 8.26 pulgadas son 209.9 mm (usé un PDF A4 para esto).
fuente
identify
un PDF en OS X, no obtengo ningún resultado.identify
requiere ImageMagickEncontré 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:
Significa [0 0 ancho alto] así que aquí está mi solución súper cojo pero funcional para extraer esto:
Simplemente cambie test.pdf a su archivo.
fuente
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
grep
comando 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.fuente