gpt4 book ai didi

pdf - 如何将 PDF 文件中的特定 RGB 颜色更改为特定的 CMYK 颜色?

转载 作者:行者123 更新时间:2023-12-03 14:10:05 25 4
gpt4 key购买 nike

如果我有一个包含特定 RGB 颜色的对象(文本、艺术线条)的 PDF 文件,并且我想将这些对象转换为具有特定的 CMYK 颜色,有哪些可用的库可以让我这样做?

请注意,我不需要能够从任意 RGB 值“映射”到“合适的”CMYK 值——这些值是预先确定的。

.NET/C# 首选,但我会考虑几乎任何东西。

显然,我更喜欢免费/开放的图书馆而不是付费图书馆,但根据许可模式,我也会考虑付费图书馆。

最佳答案

诚实地?这是令人难以置信的非平凡。

PDF 渲染是通过描述将按顺序渲染的内容的程序完成的。有一个图形状态,它累积程序所做的更改并标记页面。

有多种不同的方式可以设置颜色。希望您的 PDF 文档仅使用运算符 RG 和 rg,它们为描边和非描边操作设置 RGB 颜色。这意味着颜色操作将采用以下形式:

rf gf bf RG

其中 rf、gf 和 bf 是浮点数,表示从 0.0 到 1.0 的颜色 channel 强度。

需要重写所有 RG 和 rg 运算符以分别使用 K 和 k,这将使用 4 channel CMYK。

这本身就具有挑战性,因为您必须阅读所需的文档/页面,解析内容流并重写一个将替换旧流的新流(同样,可能但并非微不足道 - PDF 允许您通过在文件中附加一个新的生成来替换单个对象,如内容流)。不要考虑使用 SED。 PDF 依赖于文件布局,在不保持相同长度的情况下更改内联内容会破坏 PDF。

如果文件使用 CS 和 cs 运算符,则会出现真正的问题。考虑以下操作序列:
/DeviceRGB CS 1 0 0 SC 0 0 m 200 200 l S 200 200 m 200 0 l 0 1 0 SC S

这意味着将颜色空间设置为 DeviceRGB,将颜色设置为红色,移动到 (0, 0),线到 (200, 200),描边(红色),移动到 (200, 200),线到 (200, 0),设置颜色为绿色和描边。

这不是那么简单 - 如果您想将 RGB 红色更改为 CMYK 黄色,您可以这样做:
/DeviceCMYK CS 0 0 1 0 SC 0 0 m 200 200 l S 200 200 m 200 0 l 0 1 0 SC S

这将适用于黄色,但会中断设置为绿色的尝试,因为 CS 命令现在需要 4 个 channel 。

你需要做的是解释内容流,跟踪当前的色彩空间是什么,当一个 CS 命令进入你想要改变的颜色时,你需要用/DeviceCMYK CS cmyk SC 替换它,然后下一个 rgb SC 命令需要更改为/DeviceRGB CS rgb SC。

这没有考虑如何处理基于 ICC 的颜色空间、灰度、LAB、n channel 、颜色映射、图案、形式等。

PDF 不是为了编辑而制作的。

如果我的任务是实现这一目标,我会执行以下操作:
  • 如果文件少于 10 个,我会在 Illustrator 中打开它们,更改颜色并以 PDF 格式导出
  • 如果是 10 人或更多但少于 1000 人,我会雇佣一个临时工来做我在步骤 1 中所做的。
  • 如果它是 1000 或更多但小于 10000,如果可能的话,我会编写一个程序来编写 Illustrator 脚本来进行这些更改。
  • 如果它是 10000 或更多并且正在进行中,我会与管理层就文档制作进行认真的讨论,因为如果需要对终端文件格式进行这样的更改并且它们无法正确重新生成。
  • 关于pdf - 如何将 PDF 文件中的特定 RGB 颜色更改为特定的 CMYK 颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2022338/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com