您可以使用Ghostscript来完成此任务。但请确保使用的是最新版本。
以下是一个可尝试的命令:
gs \
-o rgb.pdf \
-sDEVICE=pdfwrite \
-sProcessColorModel=DeviceRGB \
-sColorConversionStrategy=RGB \
-sColorConversionStrategyForImages=RGB \
cmyk.pdf
请注意,您的目标是实现转换,但“尽可能不改变颜色”的要求并非总是可行的。这在很大程度上取决于输入PDF是否使用了嵌入的颜色配置文件以及其类型。
此外,这还取决于所应用的颜色配置文件。上述命令将使用编译进Ghostscript的默认RGB配置文件。如果要使用自定义配置文件,则可以添加各种命令行参数。如果要为所有类型的PDF内容使用一个配置文件,请使用以下命令:
-sDefaultRGBProfile=rgb-profile-filename
这定义了源颜色,这些颜色在源文件中尚未被定义为色度。
如果您想要覆盖PDF文档中已经嵌入的配置文件,请添加以下内容:
-dOverrideICC=true
除了这些选项外,您还可以通过添加以下内容控制输出设备的 ICC 配置文件:
-sOutputICCProfile=output-profile-filename
使用输出配置时,通常还需要设置渲染意图。为此,请使用以下内容:
-dRenderIntent=intent
其中意图
是以下之一:
0
:用于感知
1
:用于色度测量
2
:用于饱和度
3
:用于绝对色度测量意图。
Ghostscript甚至支持为不同类型的PDF内容(图形、文本和图像)使用不同的配置文件。请参见此处:
-sGraphicICCProfile=graphicprofile-filename
-sTextICCProfile=textprofile-filename
-sImageICCProfile=imageprofile-filename
与上述通用选项
-dRenderIntent
类似,您可以针对不同的内容类型指定不同的意图:
-dGraphicIntent=intent
-dTextIntent=intent
-dImageIntent=intent
-sColorConversionStrategyForImages
开关。 - Igor