检查 PDF 是彩色、灰度还是黑白

amy*_*myn 5 pdf colors

有哪些方法可以检查 PDF 文件是彩色、灰度还是黑白?

Kur*_*fle 3

您可以使用 Ghostscript 的inkcov设备来获取每个 PDF 页面的颜色信息。以下是我的示例 PDF ( cmyk.pdf ) 的示例命令及其输出:

gs -o - -sDEVICE=inkcov cmyk.pdf

   GPL Ghostscript 9.10 (2013-08-30)
   Processing pages 1 through 5.

   Page 1
    0.00000  0.00000  0.00000  0.02231 CMYK OK
   Page 2
    0.02360  0.02360  0.02360  0.02360 CMYK OK
   Page 3
    0.02525  0.02525  0.02525  0.00000 CMYK OK
   Page 4
    0.00000  0.00000  0.00000  0.01983 CMYK OK
   Page 5
    0.13274  0.13274  0.13274  0.03355 CMYK OK
Run Code Online (Sandbox Code Playgroud)

如果加上这个-q参数,结果是这样的:

gs -q -o - -sDEVICE=inkcov cmyk.pdf

    0.00000  0.00000  0.00000  0.02231 CMYK OK
    0.02360  0.02360  0.02360  0.02360 CMYK OK
    0.02525  0.02525  0.02525  0.00000 CMYK OK
    0.00000  0.00000  0.00000  0.01983 CMYK OK
    0.13274  0.13274  0.13274  0.03355 CMYK OK
Run Code Online (Sandbox Code Playgroud)

如何解读这些数字?

  1. 每列代表一种颜色,从左到右:青色 ( C )、洋红色 ( M )、黄色 ( Y ) 和黑色 ( K )。
  2. 值0.00000表示使用零颜色。
    值1.00000表示纸张相应颜色的覆盖率为 100%。第 2 页上每种单一墨水颜色的值0.02360表示:每种颜色占整页的 2.36%(包括黑色)。

您可以看到第 1 页的值:0.00000青色、洋红色和黄色的值相同,但0.02231黑色的值相同。这意味着:第 1 页仅使用黑色墨水,并且 2.231% 的页面区域被黑色墨水覆盖。

以第 2 页为例:此处 4 种墨水中的每一种都给出了值0.02360。每种墨水覆盖整页的 2.36%。

另请查看第 3 页的值:0.02525C、M 和 Y 以及0.00000黑色。因此,该页面根本不使用黑色墨水,而是使用相同量的每种彩色墨水来覆盖整页的 2.525% 的相同尺寸区域。

第 4 页:结果与第 1 页类似。

第5页: 看看你自己...

注意事项:

  1. 设备inkcov始终打印 CMYK 值,而不是 RGB 值。原因是它在分析页面的颜色覆盖范围之前将所有 RGB 色调转换为 CMYK。这当然会带来一些不准确性(在依赖此工具之前必须考虑到这一点)。
  2. 您需要使用 Ghostscript 9.05 或更高版本(如果您使用的是 MS Windows:v9.07 或更高版本)。以前的版本没有该inkcov设备。
  3. 在 PDF 查看器中查看或在纸张上打印时,您肯定会遇到似乎不包含颜色而仅包含灰色阴影的 PDF 页面。这是因为灰色阴影可以通过使用等量的不同颜色来组成。

更新

下图大致重现了上面使用的5个PDF页面cmyk.pdf。这应该能让您对它们在 PDF 查看器中的外观有一个大概的印象。它应该可以更容易地理解上面引用的油墨覆盖率的不同值如何相加:

代表 <code>cmyk.pdf</code> 5 页的图像

这是我最初用来创建上面使用的 Ghostscript 命令cmyk.pdf:

gs                  \
  -o cmyk.pdf       \
  -sDEVICE=pdfwrite \
  -g5950x2105       \
  -c "/F1 {100 100 moveto /Helvetica findfont 42 scalefont setfont} def" \
  -c "F1                        (100% 'pure' black)    show showpage"    \
  -c "F1 .5 .5 .5   setrgbcolor  (50% 'rich' rgbgray)  show showpage"    \
  -c "F1 .5 .5 .5 0 setcmykcolor (50% 'rich' cmykgray) show showpage"    \
  -c "F1 .5         setgray      (50% 'pure' gray)     show showpage"    \
  -c "   1 0 0 0 setcmykcolor 100 130 64 64 rectfill"                    \
  -c "   0 1 0 0 setcmykcolor 200 130 64 64 rectfill"                    \
  -c "   0 0 1 0 setcmykcolor 300 130 64 64 rectfill"                    \
  -c "   0 0 0 1 setcmykcolor 400 130 64 64 rectfill"                    \
  -c "   0 1 1 0 setcmykcolor 100  30 64 64 rectfill"                    \
  -c "   1 0 1 0 setcmykcolor 200  30 64 64 rectfill"                    \
  -c "   1 1 0 0 setcmykcolor 300  30 64 64 rectfill"                    \
  -c "   1 1 1 0 setcmykcolor 400  30 64 64 rectfill        showpage"
Run Code Online (Sandbox Code Playgroud)