C# 在PDF文件中标识RGB和CMYK

C# 在PDF文件中标识RGB和CMYK,c#,.net,pdf,pdfbox,dynamicpdf,C#,.net,Pdf,Pdfbox,Dynamicpdf,但这并不能解释太多,因为我没有在那里发表评论的声誉,所以我要问这个问题 前面提到的线程中提供的答案检索RG和b值,但我不知道找到的值是否显示了CMYK的部分(据我所知,渲染后所有值都转换为RGB) 我需要首先确定pdf文件中使用的是什么颜色系统,我现在知道CMYK和RGB可以在单个文件中同时使用。因此,我需要分析我的C#应用程序中的pdf文件,并找到一种方法,在需要时将CMYK部件转换为RGB .这是一个非常广泛的问题,如果您至少阅读PDF规范的一部分,对您来说会更好。让你尝尝我为什么这么说 P

但这并不能解释太多,因为我没有在那里发表评论的声誉,所以我要问这个问题

前面提到的线程中提供的答案检索RG和b值,但我不知道找到的值是否显示了CMYK的部分(据我所知,渲染后所有值都转换为RGB)

我需要首先确定pdf文件中使用的是什么颜色系统,我现在知道CMYK和RGB可以在单个文件中同时使用。因此,我需要分析我的C#应用程序中的pdf文件,并找到一种方法,在需要时将CMYK部件转换为RGB


.

这是一个非常广泛的问题,如果您至少阅读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。但是,如果你想正确地做这件事,这听起来可能更难。例如,请查看此网站:

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


这是可行的,但在实践中,您需要一个引擎(例如LittleCMS),它使用ICC配置文件(用于描述颜色空间)来进行适当的转换。

也许您可以使用库?在本例中,请看下面的示例:请注意,每个PdfBitmap都包含有关颜色格式的信息:我正在尝试PdfBitmap,我会告诉你它是如何运行的。谢谢你的转换公式真的很有帮助。但问题是我需要首先确定pdf中的哪些对象是cmyk,哪些是rgb或灰度。我在任何地方都没有找到任何解决方案,我了解不同的颜色空间及其需求,但我不知道如何在pdf中识别这些方案“如果您至少阅读pdf规范的一部分,对您来说会更好”您这样做了吗?这不是魔术——它在PDF规范中定义得非常清楚。其中有一章专门讨论色彩空间。