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 ...
Respostas:
A unidade 'pts' usada por
pdfinfo
indica um ponto PostScript. UMA ponto PostScript é definido em termos de uma polegada e uma resolução de 72 pontos por polegada:O manual para
gv
contém uma lista dos formatos de papel comuns especificados nos pontos PostScript.fonte
pdfinfo
às vezes, me dá o formato de papel (comoPage size: 595.28 x 841.89 pts (A4)
) - será que é o caso de uma lista de tamanhos de página que conhece?Não é a maneira mais fácil, mas é dada
imagemagick
eunits
você também pode usarpara 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:
Significando que 8,26 polegadas são 209,9 mm (usei um PDF A4 para isso).
fonte
identify
PDF no OS XI, não recebo nenhuma saída.identify
requer o ImageMagickMe 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:
Significa [0 0 width height], então aqui está minha solução super manca, mas funcional, para extrair isso:
Basta alterar test.pdf para o seu arquivo.
fonte
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
grep
comando 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.fonte