从 PDF 文件获取图像尺寸(而非分辨率)

从 PDF 文件获取图像尺寸(而非分辨率)

我有一个包含文本和图像的 PDF 文件。查看文档属性,我可以找到文档的尺寸(例如 297 毫米 x 210 毫米)。我想知道的是图像的尺寸。不是分辨率(以像素为单位),而是如果我打印 PDF 文件,它在纸上显示的大小。

我怎样才能从数字文件中获取该信息,而无需打印并手工测量?

答案1

这最终取决于 PDF 文件如何使用图像。PDF 规范第 209 页包含一个如何在页面上定位图像的示例:

示例 此示例定义了一个宽 256 个样本、高 256 个样本的图像,在 DeviceGray 颜色空间中每个样本 8 位。它将图像绘制在页面上,其左下角位于当前用户空间的坐标 (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 中的命令可能看起来类似(或更复杂),您需要检查它们以找出图像绘制的位置和大小。

mutool您可以通过解压缩流(例如)并在文本编辑器中打开它来查看 PDF 文件。

相关内容