使用 ghostscript 将 PDF 转换为 x-3:2002 时,我应该使用哪些设置来保持颜色正确?

Posted

技术标签:

【中文标题】使用 ghostscript 将 PDF 转换为 x-3:2002 时,我应该使用哪些设置来保持颜色正确?【英文标题】:What settings should I use to keep the colour correct when converting a PDF to x-3:2002 with ghostscript? 【发布时间】:2014-09-30 12:35:03 【问题描述】:

我有一个应用程序,它使用 TCPDF 生成 PDF,然后使用 Ghostscript 将其转换为 x3:2002 兼容性。

使用命令行,我调用这个命令:

gs -dPDFX -dBATCH -dQUIET -dNOPAUSE -dNOOUTERSAVE -sProcessColorModel=DeviceCMYK -sColorConversionStrategy=CMYK -sColorConversionStrategyForImages=CMYK -sOutputICCProfile='ISO Coated sb.icc' -sDEVICE=pdfwrite -sOutputFile=$new_pdf $defs_file $original_pdf

这很好用,只是颜色有点褪色。我可以更改哪些设置来改善这一点?

一个不相关的观点,但如果有人遇到过这个问题并有答案,值得指出的是:我也收到“页面框嵌套不正确”的错误。

感谢任何帮助。

-- 更新--

我使用的是 9.15 版本,PDFX_def.ps 文件与提供的示例基本相同:

%!
% $Id: PDFX_def.ps 8284 2007-10-10 17:40:38Z giles $
% This is a sample prefix file for creating a PDF/X-3 document.
% Feel free to modify entries marked with "Customize".

% This assumes an ICC profile to reside in the file (ISO Coated sb.icc),
% unless the user modifies the corresponding line below.


systemdict /ProcessColorModel known 
  systemdict /ProcessColorModel get dup /DeviceGray ne exch /DeviceCMYK ne and
 
  true
 ifelse 
 (ERROR: ProcessColorModel must be /DeviceGray or DeviceCMYK.)=
  /ProcessColorModel cvx /rangecheck signalerror
 if


% Define entries to the document Info dictionary :

[ /GTS_PDFXVersion (PDF/X-3:2002) % Must be so (the standard requires).
  /Title (Generated by xxx.com) % Customize.
  /Trapped /False                 % Must be so (Ghostscript doesn't provide other).
  /DOCINFO pdfmark

% Define an ICC profile :

currentdict /ICCProfile known 
  [/_objdef icc_PDFX /type /stream /OBJ pdfmark
  [icc_PDFX <</N systemdict /ProcessColorModel get /DeviceGray eq 1 4 ifelse >> /PUT pdfmark
  [icc_PDFX ICCProfile (r) file /PUT pdfmark
 if

% Define the output intent dictionary :

[/_objdef OutputIntent_PDFX /type /dict /OBJ pdfmark
[OutputIntent_PDFX <<
  /Type /OutputIntent              % Must be so (the standard requires).
  /S /GTS_PDFX                     % Must be so (the standard requires).
  /OutputCondition (Commercial and specialty printing) % Customize
  /Info (none)                     % Customize
  /OutputConditionIdentifier (CGATS TR001)      % Customize
  /RegistryName (http://www.color.org)   % Must be so (the standard requires).
  currentdict /ICCProfile known 
    /DestOutputProfile icc_PDFX  % Must be so (see above).
   if
>> /PUT pdfmark
[Catalog <</OutputIntents [ OutputIntent_PDFX ]>> /PUT pdfmark

【问题讨论】:

【参考方案1】:

这取决于原始色彩空间所在的位置。您已将 CMYK 指定为输出,并将“ISO Coated sb.icc”指定为输出 ICC 配置文件。

因此,任何不在 CMYK 中的颜色都必须转换为 CMYK 才能开始。这是使用一些默认的 ICC 配置文件完成的,它首先将所有非 CMYK 颜色转换为 ICC 空间,然后使用另一个默认 ICC 配置文件转换为 CMYK。

您可以更改转换中涉及的任何 ICC 配置文件以获得不同的结果。查看 ghostpdl/gs/doc/GS9_Color_Management.pdf 和 /ghostpdl/gs/doc/Use.htm#ICC_color_parameters 中的文档。如果你放弃 -sOutputICCProfeil,你很可能会得到你想要的东西。

您没有说明 PDF/X defs 文件中的 OutputIntentProfile 是什么,也没有说明您使用的是什么版本的 Ghostscript,您至少需要 9.14。

你还没有说页面框没有正确嵌套错误来自哪里。

【讨论】:

谢谢肯,我用额外的信息更新了这个问题。在此期间,我在没有 -sOutputICCProfile 的情况下运行了一个,这有点有点被淘汰了,但好多了。它似乎也解决了嵌套框问题,这似乎不太可能。我将进行更多测试,但我认为您可能已经破解了它。如果是,我会回来接受答案! 错误的嵌套框问题似乎不太可能被 ICC 配置文件修复,是的 :-) 当然,您可以使用不同的 ICC 配置文件来进行与设备无关的颜色到 CMYK 的转换。恐怕我不是色彩专家。

以上是关于使用 ghostscript 将 PDF 转换为 x-3:2002 时,我应该使用哪些设置来保持颜色正确?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ghostscript 将 TIFF 转换为 PDF

Ghostscript将pdf转换为方向错误的pcl

使用 PHP(ghostscript) 将 PDF 转换为图像耗时太长

Ghostscript:将 PDF 转换为 CMYK EPS

无法使用 ImageMagick 和 GhostScript 将 PDF 转换为 JPG

使用 Ghostscript 将 PDF 转换为 PDF/A 时出错