从linux命令行查找PDF格式的色彩空间

时间:2015-05-26 10:42:21

标签: linux image pdf

我需要检查给定的PDF文件是否完全在CMYK颜色空间中。您可能知道,打印需要它。

目前,它是使用Adobe的GUI应用程序完成的,但需要花费很多时间,我们需要使用linux脚本自动执行它。

我测试了很多库,但是每个库都给了我无效的结果,或者不支持更新的PDF规范。

  • 我在ghostscript
  • 中找不到解决方法
  • 从pdf导出图像是不够好的解决方案,因为还有路径和其他媒体,这些也需要进行验证。
  • identify -verbose给出无效结果(颜色空间不好,但DPI​​也不好)。

据我所知,PDF文件中的元素可以有不同的颜色空间,我想检查每个元素是否都在CMYK中。

2 个答案:

答案 0 :(得分:1)

从编码的角度来看,您需要访问将呈现PDF文档中每个页面的工具,但不是实际绘制的东西,而是需要在每个PDF绘图命令上调用瓶颈。

从那里你需要拦截所有颜色操作符,所有gstate操作符,所有图像操作符并递归所有Form XObjects并标记不是CMYK的所有内容。请注意,某些颜色空间会很棘手,例如,您可以使用在引擎盖下使用CMYK ICC颜色空间的调色板颜色空间。您还可以遇到应用程序将颜色设置为RGB颜色,从不标记页面,然后在标记之前切换到CMYK的情况。

答案 1 :(得分:0)

您可以通过pdfimages进行此操作:

pdfimages -list /filename

如果您有cmyk,将会看到以下内容:

page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    5197  6732  cmyk    4   8  jpeg   no         5  0   600   601 32.3M  24%
   1     1 mask     5197  6732  -       1   1  jpeg   no         5  0   600   601 32.3M 775%

相反:

page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    5197  6732  icc     3   8  jpeg   no         8  0   600   601 7080K 6.9%
   1     1 mask     5197  6732  -       1   1  jpeg   no         8  0   600   601 7080K 166%