首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ps2pdf创建正确的PDF/X (幽灵脚本)

用ps2pdf创建正确的PDF/X (幽灵脚本)
EN

Stack Overflow用户
提问于 2015-05-25 09:14:52
回答 2查看 1.7K关注 0票数 4

我为这事挣扎了几天,所以我想我应该在这里寻求帮助.

基本上,我试图使用ps2pdf (版本9.10)来创建正确的PDF/X-1和PDF/X-3文档。是的,我知道ps2pdf据说只支持PDF/X-3 (参见这条线这条线这条线)。然而,由于PDF/X-1基本上是PDF/X-3的子集,我想这种转换应该是可能的。还有,使用命令..。

代码语言:javascript
复制
gs -sDEVICE=pdfwrite -dPDFX -dBATCH -dNOPAUSE -dNOOUTERSAVE -sProcessColorModel=DeviceCMYK -sOutputFile=out.pdf PDFX_def.ps in.pdf

我注意到,我正在创建的PDF/X-3文件的颜色被转换为CMYK,而不是留在RGB中(PDF/X-3应该是这种情况)。因此,从技术上讲,这些文件现在是PDF/X-1:,我可以通过在PDFX_def.ps中添加“PDFX_def.ps (PDF/X-1a:2003)”来确认这一点,并通过Adobe的预运行来运行该文件。

这就引出了问题的第一部分:如何防止在原始PDF文档中定义的RGB颜色被转换为CMYK?开关"-dColorConversionStrategy=/LeaveColorUnchanged“似乎没有任何效果。(实际上,我在这里上读到过这样的转换是不可能的。为什么会发生这种事?或者这是过时的信息?)

其次,为什么文档说“不允许”与"-dPDFX“结合使用?这不是PDF/X-3的全部内容吗?

第三,是否也可以创建通过Adobe预飞的PDF/X-4文档?

顺便提一下,这是我的PDFX_def.ps文件:

代码语言:javascript
复制
%!
% $Id$
% 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 (Blurb_ICC_Profile.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 :

/ICCProfile (ISOcoated_v2_300_eci.icc) def  % Customize or remove.

[ /GTS_PDFXVersion (PDF/X-3:2002) % Must be so (the standard requires).
  /Title (Title)                  % 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 (ISOcoated_v2_300_eci.icc) % Customize
  /Info (Info)                     % Customize
  /OutputConditionIdentifier (Custom)      % 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

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-25 11:12:31

好的,首先,您的不能产生PDF/X-1目前使用pdfwrite,因为在PDF/X-1的颜色支持的限制。这实际上是几乎有可能做到现在,但分离和DeviceN颜色空间没有转换为设备空间,并需要。

其次,您应该真正使用Ghostscript的当前版本(9.16)。

正如您在后面的回答中指出的那样,文档声明您不能使用/RGB。因此,您的RGB颜色转换为CMYK的原因是,您不能使用RGB (请稍后参阅)。

您所引用的Ghostscript bug报告已有5年历史,5年前的情况不再是真的( 9.10在将近2年前发布时也不是这样)。但是,正如我前面提到的,您仍然不能生成PDF/X-1,这就是为什么bug仍然是开放的。已经做了一些工作,还有更多工作要做。

将ColorConversionStrategy与PDFX一起设置没有效果,因为PDFX的颜色转换要求取代了命令行中的ColorConversion。

您不能在PDF/X-1文档中使用DeviceRGB空间,除非您指定一个DefautlRGB颜色空间,它本身不是DeviceRGB或DeviceN空间。据我回忆,pdfwrite中目前没有关于指定DefaultRGB空间的规定,这就是为什么不能使用DeviceRGB。

最后,您还不能使用pdfwrite设备生成PDF/X-4文件。

票数 3
EN

Stack Overflow用户

发布于 2015-05-25 15:17:34

好的,KenS的答案应该被接受为这个问题的正确答案,但是在从事标准工作几年(现在大约十五年:)之后,我想添加一些更一般性的陈述。

PDF/X-1a

请参阅PDF/X-1a,而不是PDF/X-1。这是两个不同的东西,虽然目前没有人使用PDF/X-1,但最好使用标准的正确名称,其中包括"a“。

PDF/X-3和RGB

原问题中的陈述“而不是把它们留在RGB (PDF/X-3应该是这样)”是不正确的,或者至少是误导性的(尽管我认为意图是正确的)。

PDF/X-1a和PDF/X-3之间的区别实际上是PDF/X-3支持CMYK以外的颜色空间。但这并不意味着CMYK是不允许的,或者您不能很好地将PDF/X-3用于仅用于CMYK的文件。事实上,据我所知,大多数使用"PDF/X-3“的实现仅仅使用CMYK文件。

是的,如果您有一个只包含CMYK和/或spot颜色的PDF/X-3文件,并且将标准元数据字段更改为PDF/X-1a,您将得到一个有效的PDF/X-1a文件;这些标准之间的差别很小。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30434868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档