使用 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 时,我应该使用哪些设置来保持颜色正确?的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP(ghostscript) 将 PDF 转换为图像耗时太长
Ghostscript:将 PDF 转换为 CMYK EPS