您可以使用 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)
如何解读这些数字?
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页: 看看你自己...
注意事项:
inkcov始终打印 CMYK 值,而不是 RGB 值。原因是它在分析页面的颜色覆盖范围之前将所有 RGB 色调转换为 CMYK。这当然会带来一些不准确性(在依赖此工具之前必须考虑到这一点)。inkcov设备。下图大致重现了上面使用的5个PDF页面cmyk.pdf。这应该能让您对它们在 PDF 查看器中的外观有一个大概的印象。它应该可以更容易地理解上面引用的油墨覆盖率的不同值如何相加:

这是我最初用来创建上面使用的 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)