【发布时间】:2017-08-01 07:02:04
【问题描述】:
我正在尝试从 PDF 文件中读取 CMYK 颜色以获取图形矢量,我正在使用 PDFBOX 2 读取颜色空间,返回的颜色空间是 PDSeparation 类型,具有 PDDeviceCMYK 的替代颜色空间,我不知道如何继续使用 PDDeviceCMYK,所以我提取了 RGB 颜色并将它们转换回 CMYK,但我什至没有找到将它们转换回 CMYK 的函数,所以有没有办法直接从 PDDeviceCMYK 提取 CMYK 颜色?
PDColor color = getGraphicsState().getNonStrokingColor();
PDSeparation colorSpace = (PDSeparation) color.getColorSpace();
float[] rgb = colorSpace.toRGB(color.getComponents());
【问题讨论】:
-
看看 PDSeparation.java。它通过
float[] altColor = tintTransform.eval(value);获取替代色彩空间中的值。这些东西大部分是私有的/受保护的,所以你需要复制代码。 -
@TilmanHausherr 谢谢,我在调用 colorSpace.toRGB(color.getComponents()); 之后在 altColor 上添加了断点,结果是 [1.0, 1.0, 1.0, 1.0],是正确的 cmyk 值?我不确定,我是否应该将 color.getComponents 作为参数传递,这就是 PageDrawer 至少在 getPaint 函数中所做的。
-
你是对的 Tilman,我通过从 PDSeperation.java 复制代码获得 CMYK 并将其放入我的函数中,再次感谢。
-
我建议你自己回答这个问题。或者 ping KenS 以便他将其添加到他的答案中。他的回答是正确的,但有点抽象。