У меня есть PDF-файл с текстом и изображением. Глядя на свойства документа, я могу узнать размеры документа (например, 297 мм х 210 мм). То, что я хотел бы знать, это размеры изображения. Не разрешение (в пикселях), а то, насколько большим оно будет на бумаге, если я распечатаю PDF-файл.

Как я могу получить эту информацию из цифрового файла, не распечатывая ее и не измеряя вручную?

1 ответ1

0

В конечном итоге это зависит от того, как изображение используется файлом PDF. Спецификация PDF содержит пример на стр. 209 о том, как разместить изображение на странице:

ПРИМЕР. В этом примере определяется изображение размером 256 сэмплов и высотой 256 с 8 битами на сэмпл в цветовом пространстве DeviceGray. Он рисует изображение на странице с левым нижним углом, расположенным в точке с координатами (45, 140) в текущем пользовательском пространстве и масштабируемой до ширины и высоты 132 единиц пользовательского пространства.

% 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

Последний объект (номер 23) содержит команду для перевода и масштабирования изображения, а также для его рисования. Команды в вашем PDF могут выглядеть аналогично (или более сложными), вам необходимо проверить их, чтобы выяснить, где и в каком размере нарисовано изображение.

Вы можете просмотреть свой PDF-файл, распаковав потоки, например, с помощью mutool , и открыв его в текстовом редакторе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .