Como consultar o tamanho da página pdf na linha de comando?

35

Para scripts, preciso obter as dimensões da página de um arquivo PDF (em mm).

pdfinfo apenas imprime em 'pts', por exemplo:

Page size:      624 x 312 pts

O que devo usar?

Ou que unidade é 'pts' de qualquer maneira - no caso de eu querer convertê-los ...

maxschlepzig
fonte
2
Ponto na Wikipedia
Mat
De qual página você deseja o tamanho? O tamanho legal da capa externa? O tamanho do folheto "esta página está intencionalmente em branco"? O tamanho da letra páginas duplas?
Ignacio Vazquez-Abrams

Respostas:

31

A unidade 'pts' usada por pdfinfoindica um ponto PostScript. UMA ponto PostScript é definido em termos de uma polegada e uma resolução de 72 pontos por polegada:

No final dos anos 80 aos 90, o ponto tradicional foi suplantado pelo ponto de editoração eletrônica (também chamado de ponto PostScript), que foi definido como 72 pontos por polegada ( 1 ponto = 1⁄72 polegadas = 25,4⁄72 mm = 0,352 7 mm [≙ 0,3528 mm ]).

O manual para gvcontém uma lista dos formatos de papel comuns especificados nos pontos PostScript.

maxschlepzig
fonte
11
em formatos de papel comuns: pdfinfoàs vezes, me dá o formato de papel (como Page size: 595.28 x 841.89 pts (A4)) - será que é o caso de uma lista de tamanhos de página que conhece?
Nsg # 27/12
2
Um ponto é realmente 0,352777777 ... mm, então 0,3528 mm é uma aproximação mais próxima.
Cjm 28/05
15

Não é a maneira mais fácil, mas é dada imagemagicke unitsvocê também pode usar

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

para encontrar o tamanho da página em polegadas (isso pode gerar vários resultados se o PDF usar dimensões diferentes) e depois converter os números assim:

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

Significando que 8,26 polegadas são 209,9 mm (usei um PDF A4 para isso).

Axel Knauf
fonte
11
Quando eu identifyPDF no OS XI, não recebo nenhuma saída.
David Moles
muito tarde, mas identifyrequer o ImageMagick
desativado em 22/01
6

Me deparei com o mesmo problema e chegou à seguinte solução. Não entrei na documentação de como os arquivos PDF são construídos. Apenas comparei dois arquivos PDF vazios com tamanhos de página diferentes.

Parece que os PDFs têm todos os tipos de atributos incorporados entre "<<" e ">>". Descobri que as informações de tamanho da página estão disponíveis em texto simples e podem ser encontradas com uma simples pesquisa de expressões regulares.

Isso pode ou não ser verdade para todos os pdfs, mas funcionou em tudo o que pude encontrar de diferentes fontes.

A parte relevante pode parecer com qualquer uma dessas para uma página A4 de tamanho:

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

Significa [0 0 width height], então aqui está minha solução super manca, mas funcional, para extrair isso:

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

Basta alterar test.pdf para o seu arquivo.

Peter Rakmanyi
fonte
11
observe que os valores retornados por isso estão em "pontos" não mm, pixels ou polegadas
desativados em
0

Usei maxchlepzigs answer para calcular diretamente o mm:

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

Isso também funciona com a resposta de Alex Knaufs, mas a identificação leva muito mais tempo que o pdfinfo e requer o imagemagick, mas o lado positivo é que você pode usá-lo para vários arquivos (por exemplo, fazendo o cd em um diretório e usando *.pdf):

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

O segundo grepcomando obtém os dois valores de ponto / polegada. Tenho certeza de que você pode pular o regex grep e fazê-lo diretamente com o awk, mas não consegui descobrir.

difuso
fonte