PDF文档是否包含具有不同DPI的图像?

时间:2012-07-27 23:07:40

标签: pdf dpi poppler

这个问题说明了一切。是否有包含不同dpi图像的PDF文档(每英寸点数)?

或者假设如果我知道一张图片的dpi,我就知道整个文件了吗?

3 个答案:

答案 0 :(得分:9)

我赞成@ypnos的回答,这是完全正确的。

但我想通过展示pdfimages实用程序的最新新功能来补充它。

之前已知

pdfimages能够从PDF文件中提取图像(这是唯一有用的目的)。 但是,现在您还可以使用它来调查有关所用图像的更多详细信息,而无需提取它们。

使用下一个命令,我使用新的-list参数查询某个PDF文件第7页和第8页上所有图像的数据:

pdfimages -list -f 7 -l 8  ct-magazin-14-2012.pdf

  page   num  type   width height color comp bpc  enc interp  object ID
  ---------------------------------------------------------------------
     7     0 image     581   838  rgb     3   8  jpeg   no        39  0
     7     1 image       4     4  rgb     3   8  image  no        40  0
     7     2 image     314   332  rgb     3   8  jpx    no        44  0
     7     3 image     358   430  rgb     3   8  jpx    no        45  0
     7     4 image       4     4  rgb     3   8  image  no        46  0
     7     5 image       4     4  rgb     3   8  image  no        47  0
     7     6 image       4     6  rgb     3   8  image  no        48  0
     7     7 image     596   462  rgb     3   8  jpx    no        49  0
     7     8 image       4     6  rgb     3   8  image  no        50  0
     7     9 image       4     4  rgb     3   8  image  no        51  0
     7    10 image       8    10  rgb     3   8  image  no        41  0
     7    11 image       6     6  rgb     3   8  image  no        42  0
     7    12 image     113    27  rgb     3   8  jpx    no        43  0
     8    13 image     582   839  gray    1   8  jpeg   no      2080  0
     8    14 image     344   364  gray    1   8  jpx    no      2079  0

注意,但是:此版本的pdfimages是来自Poppler的那个版本(来自XPDF的版本(还有?)支持此新功能) :

pdfimages -version

  pdfimages version 0.20.2
  Copyright 2005-2012 The Poppler Developers - http://poppler.freedesktop.org
  Copyright 1996-2011 Glyph & Cog, LLC

-list选项首次出现在2012年3月1日发布的Poppler v0.19.0中。

现在,上面的列表并未直接告诉您图像的分辨率(“dpi”)。该值取决于:在PDF页面上呈现此图像的大小?

PDF可以轻松地在PDF文件的不同位置使用相同的图像,每种场合使用不同的渲染大小。图像只需要嵌入到PDF中一次,但可以多次使用/“通过引用”渲染(效率低下的PDF可能仍然包含多次相同的图像,但这是一个不同的主题......)

现在让我们清楚查看相应列标题可能产生的问题。他们是什么意思?

page

  • 包含图像的PDF中的页码。

num

  • 当前商家信息的图片编号。

type

  • 图像类型。可能的值包括:image(不透明图像),mask(单色图像蒙版),smask(软掩模图像)和stencil(单色蒙版图像)用于绘制颜色或图案)。 注意: 图像的PDF透明度是使用两个单独的PDF对象创建的:一个用于图像,另一个用于蒙版或smask。属于透明图像的mask / smask总是直接跟随列表中的图像。

width

  • 图像宽度(以像素为单位)。

height

  • 图像高度(以像素为单位)。

color

  • 图像颜色空间。可能的值包括grayrgbcmyklab(L * a * b),icc(基于ICC),index(索引颜色),sep(分离)和devn(DeviceN)。

comp

  • 图像使用的颜色分量数。

bpc

  • 图像使用的每个颜色分量的

enc

  • 图像使用的编码(压缩)。可能的值为:image(栅格图像 - 可能在内部使用通用/Flate/LZW压缩,但不是特殊图像编码),jpeg(JPEG压缩) ,jpx(JPEG2000压缩),jbig2(JBIG2压缩)和ccitt(传真压缩)。

interp

  • 如果在放大图像时请求插值,则为yes

object ID

  • 文件中图像的PDF对象ID(带“世代号”)。

更新(2016年3月)

从Poppler v0.25.0(2013年12月11日发布)及更高版本开始,命令pdfimages -list现在包含新列,用于指示自动计算的x-ppi(水平)和y-ppi (垂直)分辨率,用于PDF渲染器在PDF页面中显示的每个嵌入图像。

此外,还显示了每个图像(未压缩时)使用的大小(以字节/ kB字节为单位)以及其大小压缩比(如PDF中所示)。

显示与上述相同文件的结果(使用Poppler v0.42.0):

page num type width height color comp bpc enc interp objectID x-ppi y-ppi size ratio
------------------------------------------------------------------------------------
   7  0 image   581   838  rgb     3   8 jpeg   no       39 0    73    73 2107B 0.1%
   7  1 image     4     4  rgb     3   8 image  no       40 0   150   150   54B 112%
   7  2 image   314   332  rgb     3   8 jpx    no       44 0   150   150 19.0K 6.2%
   7  3 image   358   430  rgb     3   8 jpx    no       45 0   150   150 15.7K 3.5%
   7  4 image     4     4  rgb     3   8 image  no       46 0   150   150   62B 129%
   7  5 image     4     4  rgb     3   8 image  no       47 0   150   150   51B 106%
   7  6 image     4     6  rgb     3   8 image  no       48 0   150   150   62B  86%
   7  7 image   596   462  rgb     3   8 jpx    no       49 0   150   150 40.7K 5.0%
   7  8 image     4     6  rgb     3   8 image  no       50 0   150   150   86B 119%
   7  9 image     4     4  rgb     3   8 image  no       51 0   150   150   62B 129%
   7 10 image     8    10  rgb     3   8 image  no       41 0   150   150  157B  65%
   7 11 image     6     6  rgb     3   8 image  no       42 0   150   150   82B  76%
   7 12 image   113    27  rgb     3   8 jpx    no       43 0   151   152 1090B  12%
   8 13 image   582   839  gray    1   8 jpeg   no     2080 0    72    72  319B 0.1%
   8 14 image   344   364  gray    1   8 jpx    no     2079 0   150   150 4325B 3.5%

<强> x-ppi

  • 在PDF页面上呈现时图像的水平分辨率(以每英寸像素为单位)。

<强> y-ppi

  • 在PDF页面上呈现时图像的垂直分辨率(以每英寸像素为单位)。

<强> size

  • PDF文件中嵌入图像的大小。以下后缀正在使用中:'B'字节,'K'千字节,'M'兆字节和'G'千兆字节。

<强> ratio

  • 嵌入图像的压缩率。

答案 1 :(得分:4)

答案是肯定的。 DPI在每个嵌入图像中都是独立的。

一些DTP程序的常用技术是将所有图像的DPI重新计算到上限(如果之前DPI较低,则保持不变)。但这是可选的。顺便说一下,你也可以将(未经修改的)PDF嵌入到PDF中;在这个阶段,你失去了所有可能做出的假设。

答案 2 :(得分:4)

使用Do运算符绘制图像。传递给此运算符的操作数是图像的名称。在当前页面的资源字典中查找图像名称。图像资源具有宽度(像素列数)和高度(像素行数)。 PDF页面上显示的图像的物理宽度和高度由Do运算符时的CTM(当前变换矩阵)的值决定。如果CTM等于单位矩阵,则物理宽度和高度将为1 pt高和1 pt宽。 (1磅等于1/72英寸)。通常,CTM具有将1x1 pt方形转换为更大图像的非同一性值。像素行数和像素列数以及图像的物理扩展数的组合决定了PDF页面上显示的图像分辨率。

示例:图像资源由300像素行组成。每行包含400个像素。 CTM等于[400 0 0 300 100,100]。图像高度为300 pts,图像宽度为400 pts。所以两个方向的分辨率都是72 dpi。

简而言之:PDF规范允许PDF包含各种分辨率的图像。