Como consultar o tamanho da página em pdf a partir da linha de comando?

31

Para o script, 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 qual unidade é 'pts' de qualquer maneira - caso eu queira convertê-las ...

    
por maxschlepzig 27.05.2012 / 19:48

3 respostas

23

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

In the late 1980s to the 1990s, the traditional point was supplanted by the desktop publishing point (also called the PostScript point), which was defined as 72 points to the inch (1 point = 1⁄72 inches = 25.4⁄72 mm = 0.352¯7 mm [ ≙ 0.3528 mm] ).

O manual para gv contém uma lista de formatos de papel comuns especificados em pontos PostScript.

    
por 27.05.2012 / 21:00
12

Não é a maneira mais fácil, mas considerando imagemagick e units , você 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

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

    
por 28.05.2012 / 19:59
4

Acompanhou o mesmo problema e chegou à solução a seguir. Eu não entrei na documentação de como arquivos PDF são construídos. Apenas comparei dois arquivos pdf vazios com diferentes tamanhos de páginas.

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

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

A parte relevante pode ser parecida com qualquer uma delas para uma página tamanho A4:

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

Isso significa [0 0 height width], então aqui está minha solução super coesa, 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.

    
por 01.10.2014 / 14:53

Tags