识别PDF文件中的RGB和CMYK

时间:2015-07-03 04:05:05

标签: c# .net pdf pdfbox dynamicpdf

I know this question has been asked before但它并没有解释太多,因为我没有在这里发表评论的声誉,我在问这个问题。

上述线程中提供的答案检索rg和b值,但我不知道是什么告诉我们找到的值是否显示哪个部分是CMYK(据我所知,渲染后所有值都转换为RGB )。

我需要首先确定pdf文件中使用的颜色系统,我现在明白CMYK和RGB可以在一个文件中同时使用。所以我需要分析我的C#应用​​程序中的pdf文件,并找到一种方法将CMYK部分转换为RGB(如果需要)。

I learned that conversion can be done using ABCDpdf

1 个答案:

答案 0 :(得分:0)

这是一个非常广泛的问题,如果您阅读至少部分PDF规范,对您来说会更好。为了让你体会我为什么这么说......

PDF和色彩空间

1)PDF可以包含多种颜色空间
- 设备颜色空间,如RGB,CMYK和灰色
- 实验室的抽象色彩空间 - 基于ICC配置文件的色彩空间,如基于ICC的RGB,基于ICC的Lab,...
- 命名或特殊颜色空间,如分离,设备-N和N通道
(而且我省略了一些迷人的东西,如图案和阴影)

2)所有上述色彩空间都可以在整个PDF文件中使用。当您的PDF文件符合某些ISO标准(例如PDF / A,PDF / X ......)时,它必须遵守限制颜色空间数量的规则,但通常在单个PDF中允许所有颜色空间。

3)使用PDF文件时,确定如何处理这些颜色空间。如果要使用CMYK墨水打印到桌面打印机,则会将所有这些颜色空间转换为CMYK。如果您正在屏幕上查看PDF文件,则会将所有这些颜色空间转换为RGB。

转换颜色

是的,您可以将CMYK(以及我提到的所有其他颜色空间)转换为RGB。但是,如果你想要正确地做到这一点,那也可能听起来要困难得多。举个例子来看看这个网站:http://www.rapidtables.com/convert/color/cmyk-to-rgb.htm

它包含用于此转换的快速且易于使用的公式:
R = 255×(1-C)×(1-K)
G = 255×(1-M)×(1-K)
B = 255×(1-Y)×(1-K)

这样可行,但实际上你需要一个使用ICC配置文件(用于表征颜色空间)的引擎(例如LittleCMS)来进行正确的转换。