Ghostscript命令用于查找pdf文件中每个页面使用的颜色数

时间:2017-11-17 16:02:45

标签: ghostscript

我是GhostScript的新手。你能告诉我Ghostscript命令,找到pdf文件中每个页面使用的颜色数。我需要从java程序

解析这个命令的结果

1 个答案:

答案 0 :(得分:0)

没有这样的Ghostscript命令或设备。也很难弄清楚;这取决于你的意思。例如,您是否打算计算每个图像中每个像素的颜色?您对哪个色彩空间感兴趣?那么基于ICCBased的颜色空间,您想要组件值还是CIE值?

[编辑]

是的,没有Ghostscript等价物,我确实这么说。

您必须拦截对颜色操作员的每次调用,检查所提供的组件并查看它们是否为黑色和白色。例如,如果您设置CMYK颜色,其中C = M = Y = 0且K!= 0,则其仍为黑白。类似的参数适用于RGB,CIE和ICC颜色空间。

现在我打赌ImageMagick不这样做,我怀疑它只是使用Ghostscript渲染位图(可能是RGB),然后计算输出中每种颜色的像素数。图像处理工具几乎都必须有一种方法来计算,所以它的成本很低。

它也错了。

它没有告诉你有关原始颜色的任何信息。如果将颜色对象渲染到与指定颜色空间不同的颜色空间,则渲染引擎必须将颜色空间从其所在的颜色空间转换为预期的颜色空间。这通常会导致颜色偏移,尤其是在从RGB转换为CMYK时,但任何转换都可能会出现此问题。

因此,如果这是ImageMagick正在做的事情,那么它最多也是不准确的。可以通过一些努力来准确地编写PostScript来做到这一点,但确切地说,“颜色”和“黑白”仍然是一个问题。你还没有说明为什么你想知道输入文件是否是“黑白”(你还没有说过,如果灰色计为黑白,那就不一样了)

我猜你打算为彩色打印收取更多费用,或者需要将颜色输入转移到另一台打印机。在这种情况下,您需要知道PDF是否使用(例如)R = G = B = 1表示黑色,因为通常会导致C = M = Y = 0 K = 1呈现给打印机。不仅如此,从一台打印机到另一台打印机所产生的确切颜色甚至可能不同(颜色转换取决于设备),因为Ghostscript生产纯黑色并不意味着另一台打印机会这样做。

这不是一个简单的主题。