如何批量将CMYK PDF转换为RGB?

3
我有一批大量的PDF文件(6,000 +),需要将它们从CMYK颜色配置文件转换为RGB。是否有任何脚本可以完成此任务,并且最好不会(太)明显地改变颜色?这些PDF是书籍文件,最初是为印刷设计的,现在正在准备加载为电子书。

我找到了一些InDesign脚本,可能能够做到这一点,但在这一点上,从原始设计文件中获取并重新导出将非常耗时。另一个选择似乎是通过Adobe Acrobat运行操作,但我还没有成功过。

我还发现了这个Java代码,如果有人可以证明它:

http://www.aspose.com/docs/display/pdfjava/Changing+Color+space+of+a+PDF+document

有什么建议或见解吗?

3个回答

5
您可以使用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

完美运行。 - Dan Gayle
开发人员表示 (1,2,3,4) 没有 -sColorConversionStrategyForImages 开关。 - Igor

0
我会使用Adobe Acrobat Pro。进入工具,预检(根据您拥有的版本可能在不同位置)。

enter image description here

在PDF修复部分查找“转换为sRGB”。您可以手动运行此命令以测试单个PDF文件是否有效。如果有效,请转到选项菜单并选择“创建预检滴管”。

enter image description here

在成功和失败时,您将获得一些关于要执行的操作的选项,但当您单击“保存”按钮时,您将获得一个实际的Windows可执行文件,Mac上您应该会得到一个应用程序文件。您可以将此文件直接拖动到文件或文件夹上,它将运行该操作,就像Photoshop一样。

enter image description here


有没有办法在批处理过程中使用它? - Dan Gayle

0

使用Adobe Acrobat Pro生成的预检可用于批处理。在我的情况下,我必须将专色转换为CMYK而不影响其他颜色,因此我选择“仅转换为CMYK(SWOP)”在“PDF修复”部分中

保存预检后会生成一个.exe文件。可以使用以下命令在命令提示符中测试它。

"%location_of_file%\Convert to CMYK only (SWOP).exe" "" "%file_name%"

我还准备了一个脚本来自动化这个过程,我可以给你一个小的原型。

d:
cd %dir% ::directory on which the batch process is to be run.
:cycle
set count_files=0
for %%x in (*.pdf) do set /a count_files+=1 ::PDF in my case so *.pdf
if %count_files%==0 ( GOTO :MISSING ) else (for /F %%a in ('dir /a-d /b /o-d *.pdf') do set oldest=%%a)
"%location_of_executable%\Convert to CMYK only (SWOP).exe" "" "%oldest%"
move %oldest%  %output_folder_with_location%\%oldest%
timeout 3 ::delay so that conversion process get completed
:MISSING
goto :cycle

这个批处理脚本会一直循环自身,无论是失败还是成功,并且如果有PDF需要处理,该批处理脚本会从最旧的文件开始转换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接