识别 PDF 文件中的 RGB 和 CMYK

Identify RGB and CMYK in a PDF file

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

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

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

I learned that conversion can be done using ABCDpdf.

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

PDF 和色彩空间

1) PDF 可以包含范围广泛的色彩空间
- RGB、CMYK 和灰色等设备颜色空间
- Lab
等抽象色彩空间 - 基于 ICC 配置文件的色彩空间,例如基于 ICC 的 RGB、基于 ICC 的 Lab、...
- 命名或特殊颜色空间,例如 Separation、Device-N 和 N-Channel
(并且我省略了一些迷人的,例如图案和阴影)

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)来进行适当的转换。