Obtenha dimensões da imagem (não resolução) do arquivo PDF

0

Eu tenho um arquivo PDF com texto e uma imagem. Olhando para as propriedades do documento, posso descobrir as dimensões do documento (por exemplo, 297 mm x 210 mm). O que eu gostaria de saber são as dimensões da imagem. Não a resolução (em pixels), mas quão grande seria no papel se eu imprimisse o arquivo PDF.

Como posso obter essas informações do arquivo digital, sem imprimi-las e medi-las manualmente?

    
por Felix 26.09.2018 / 12:29

1 resposta

0

Em última análise, depende de como a imagem é usada pelo arquivo PDF. A especificação do PDF contém um exemplo na p. 209 de como posicionar uma imagem em uma página:

EXAMPLE This example defines an image 256 samples wide by 256 high, with 8 bits per sample in the DeviceGray colour space. It paints the image on a page with its lower-left corner positioned at coordinates (45, 140) in current user space and scaled to a width and height of 132 user space units.

% Page object
20 0 obj
<<
  /Type /Page
  /Parent 1 0 R
  /Resources 21 0 R 
  /MediaBox [0 0 612 792] 
  /Contents 23 0 R
>> endobj

% Resource dictionary for page
21 0 obj
<< 
  /ProcSet [ /PDF /ImageB ]
  /XObject << /Im1 22 0 R >> 
>> endobj 

% Image XObject
22 0 obj
<<
  /Type /XObject
  /Subtype /Image
  /Width 256
  /Height 256
  /ColorSpace /DeviceGray /BitsPerComponent 8 /Length 83183
  /Filter /ASCII85Decode 
>>
stream 9LhZI9h\GY9i+bb;,p:e;G9SP92/)X9MJ>^:f14d;,U(X8P;cO;G9e];c$=k9Mn\]
...Image data representing 65,536 samples...
8P;cO;G9e];c$=k9Mn\]~>
endstream
endobj

% Contents of page
23 0 obj
<< 
  /Length 56 
>>
stream 
  q
  132 0 0 132 45 140 cm   % Translate to (45,140) and scale by 132
  /Im1 Do                 % Paint image
  Q
endstream endobj

O último objeto (número 23) contém um comando para traduzir e dimensionar a imagem e pintá-la. Os comandos em seu PDF podem ser parecidos (ou mais complicados), você precisará inspecioná-los para descobrir onde e em que tamanho a imagem é pintada.

Você pode analisar seu arquivo PDF descompactando os fluxos, por exemplo. com mutool e abri-lo em um editor de texto.

    
por 26.09.2018 / 14:34

Tags