将PDF转换为CMYK(带有识别CMYK的标识)

31

我很难让ImageMagick的identify识别PDF为CMYK格式。

简而言之,假设我正在使用pdflatex构建名为test.tex的文件:

\documentclass[a4paper,12pt]{article}

%% https://tex.stackexchange.com/questions/13071
\pdfcompresslevel=0

%% http://compgroups.net/comp.text.tex/Making-a-cmyk-PDF
%% ln -s /usr/share/color/icc/sRGB.icm .
% \immediate\pdfobj stream attr{/N 4} file{sRGB.icm}
% \pdfcatalog{%
% /OutputIntents [ <<
% /Type /OutputIntent
% /S/GTS_PDFA1
% /DestOutputProfile \the\pdflastobj\space 0 R
% /OutputConditionIdentifier (sRGB IEC61966-2.1)
% /Info(sRGB IEC61966-2.1)
% >> ]
% }

%% http://latex-my.blogspot.com/2010/02/cmyk-output-for-commercial-printing.html
%% https://tex.stackexchange.com/questions/9961
\usepackage[cmyk]{xcolor}

\begin{document}
Some text here...
\end{document}

如果我尝试识别生成的test.pdf文件,无论我尝试了什么选项(至少根据源代码中提供的链接),它都会以RGB格式显示,但其中的颜色将以CMYK格式保存; 对于上面的源代码:

$ grep -ia 'cmyk\|rgb\| k' test.pdf 
0 0 0 1 k 0 0 0 1 K
0 0 0 1 k 0 0 0 1 K
0 0 0 1 k 0 0 0 1 K
0 0 0 1 k 0 0 0 1 K
FontDirectory/CMR12 known{/CMR12 findfont dup/UniqueID known{dup
/PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.11-2.2 (TeX Live 2010) kpathsea version 6.0.0)

$ identify -verbose 'test.pdf[0]'
...
  Type: Palette
  Endianess: Undefined
  Colorspace: RGB
  Depth: 16/8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 8-bit
  Channel statistics:
    Red:
...
    Green:
...
    Blue:
...
  Histogram:
         5: (12593,11565,11822) #31312D2D2E2E rgb(49,45,46)
         4: (16448,15420,15677) #40403C3C3D3D rgb(64,60,61)
         9: (20303,19275,19532) #4F4F4B4B4C4C rgb(79,75,76)
        25: (23901,23130,23387) #5D5D5A5A5B5B rgb(93,90,91)
...

如果我取消注释\immediate\pdfobj stream ...部分,基本上也会发生同样的事情;然而,如果文档中只有一种颜色(黑色),我就不知道identify从哪里得到RGB值的直方图了(尽管可以说,所有的值都接近灰色)?!

 

那么,无论如何,我认为最好尝试使用 ghostscripttest.pdf 转换为新的pdf文件,这将被identify识别为CMYK - 但是即使在那里也没有成功:

$ gs -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite  -sOutputFile=test-gs.pdf -dUseCIEColor -sProcessColorModel=DeviceRGB -dProcessColorModel=/DeviceCMYK -sColorConversionStrategy=/CMYK test.pdf 

GPL Ghostscript 9.01 (2011-02-07)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1


$ identify -verbose 'test-gs.pdf[0]'
...
  Type: Grayscale
  Base type: Grayscale
  Endianess: Undefined
  Colorspace: RGB
  Depth: 16/8-bit
...

所以,identify 唯一感知到的变化是 Type: Grayscale(相对于之前的 Type: Palette);但除此之外,它仍然将颜色空间视为 RGB!

此外,请注意,identify 确实能够正确地报告 CMYK pdf - 参见CMYK poster example: fitting pdf page size to (bitmap) image size? #17843 - TeX - LaTeX - Stack Exchange,其中提供了使用 convertgs 生成此类 PDF 文件的命令行示例。实际上,我们可以执行:

convert test.pdf -depth 8 -colorspace cmyk -alpha Off test-c.pdf

...并且这将会生成一个PDF,该PDF将被识别为CMYK - 然而,默认情况下,PDF也将被光栅化(默认为72 dpi)。

编辑:我刚刚发现,如果我在OpenOffice中创建一个.odp演示文稿,并将其导出为PDF; 那么默认情况下,该PDF将是RGB的,但是以下命令(来自ghostscript示例| Production Monkeys):

# Color PDF to CMYK:
gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \
-sColorConversionStrategy=CMYK -dProcessColorModel=/DeviceCMYK \
-sOutputFile=output.pdf input.pdf

...实际上将生成CMYK PDF,并由identify报告为这样(尽管黑色会丰富,而不是平淡 - 在所有四个通道上); 然而,仅当幻灯片添加了图像时(显然,它是触发颜色转换的一种?!),此命令才能工作!奇怪的是,我无法从pdflatex PDF中获得相同的效果。

 

所以我想我的问题可以有两种方式提出:

  • 是否有任何Linux命令行转换方法,可以将RGB PDF转换为CMYK PDF,同时保留矢量,被identify识别为这样(因此将构建正确的CMYK颜色直方图)
  • 是否还有其他类似于identify的命令行Linux工具,即使在来自pdflatex的原始test.pdf中也会正确识别使用CMYK颜色(并可能基于任意选择的PDF页面构建颜色直方图,就像identify应该做的那样)?

提前感谢任何答案,
干杯!

 

一些参考文献:


我认为identify不是检查转换成功的好方法。我拿一个PDF文件,identify声称使用CMYK颜色空间,并检查其是否符合PDF/X标准,在Acrobat的预检功能中,这揭示了颜色仍然是RGB。此外,如果identify是ImageMagick的一部分,那么它正在栅格化PDF,因此我不确定它所说的任何内容都是可靠的(在直方图中我得到灰度值,但我有一个纯白和黑色的矢量PDF,表明可能发生了一些反锯齿处理)。 - darda
6个回答

34

sdaau,你尝试将PDF转换为CMYK的命令不正确。请改用以下命令:

 gs \
   -o test-cmyk.pdf \
   -sDEVICE=pdfwrite \
   -sProcessColorModel=DeviceCMYK \
   -sColorConversionStrategy=CMYK \
   -sColorConversionStrategyForImages=CMYK \
    test.pdf 

更新

如果颜色转换不如预期,并且您看到类似于 "Unable to convert color space to Gray, reverting strategy to LeaveColorUnchanged" 的消息,则...

  1. 你的 Ghostscript 可能是版本系列为 9.x 的新版,以及
  2. 你的源 PDF 可能使用了嵌入的 ICC 颜色配置文件

在这种情况下,在命令行中添加 -dOverrideICC 并查看是否可以按照预期更改结果。


更新 2

为避免出现 JPEG 图像中的伪影(原本没有),请添加:

-dEncodeColorImages=false

在命令行中执行。(几乎所有的GS PDF->PDF 处理都是如此,而不仅仅是此案例。因为当要求GS生成PDF输出时,默认情况下会创建一个全新的文件,其中包含新构造的对象和新的文件结构--它不像更“愚蠢”的PDF处理器pdftk那样简单地重新使用先前的对象。{pdftk具有其他优点,不要误解我的说法!} GS默认应用JPEG压缩--请查看当前的Ps2pdf文档并搜索"ColorImageFilter"以了解更多细节...)


这个方法在将向量转换为CMYK时是否会保留它们,还是需要先栅格化? - johnp
1
@johnp:但是为了您的放心,它确实会保留矢量图。您可以通过有创意地应用这个答案来验证您的PDF文档(在转换为CMYK之前和之后)。 - Kurt Pfeifle
1
我尝试使用一个只包含文本和一些背景颜色的PDF文件运行此命令。但是,identify 命令显示该 PDF 文件是 sRGB 色彩空间。 - Varun Joshi
1
@VarunJoshi:identify 命令是 ImageMagick 工具套件的一部分。ImageMagick 无法原生地处理 PDF。相反,它使用第三方工具(称为“代理”)将 PDF 页面先转换为光栅图像,然后再对这些光栅图像进行处理。(在 PDF 的情况下,IM 用于将其转换为光栅图像的代理是 Ghostscript。)你的陈述根本没有证明我的命令不能按预期工作。你可以通过对自己选择的经过验证为 CMYK 的 PDF 运行 identify 命令来自行证明。它也会说是 sRGB。 - Kurt Pfeifle
1
@darda:没有区别,只是语法不同。-sXXXXXX=Something 是告诉 Ghostscript 把 XXXXXX 值作为字符串处理。而 -dXXXXXX=/Something 语法则是告诉 Ghostscript 把 XXXXXX 值作为标记处理,标记以斜杠作为第一个字符。(每个 Ghostscript 版本只熟悉一组固定的标记。任何 -dXXXXXX=/Something 标记都可以重写为 -sXXXXXX=Something 字符串,但反之则不一定成立。) - Kurt Pfeifle
显示剩余2条评论

6

我有一个无关的问题,但现在我也在处理CMYK PDF文件方面遇到了困难。

我写了这个小脚本(它叫做pdf2pdfx):

#!/bin/bash

gs \
-dPDFX \
-dBATCH \
-dNOPAUSE \
-dNOOUTERSAVE \
-sDEVICE=pdfwrite \
-sColorConversionStrategy=CMYK \
-dProcessColorModel=/DeviceCMYK \
-dPDFSETTINGS=/prepress \
-sOutputFile="${1%%.pdf}_X-3.pdf" \
PDFX_def.ps \
"$1"

我的PDFX_def.ps包含以下内容(我删除了ICC配置文件并定义了FOGRA39,这应该没问题):

%!
% $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 (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 :

% /ICCProfile (/usr/share/color/icc/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 (Commercial and specialty printing) % Customize
  /Info (none)                     % Customize
  /OutputConditionIdentifier (FOGRA39)      % 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

识别正确报告CMYK颜色空间。

tbart@blackknight ~/orpheus/werbung/action $ identify -verbose action_schulungsvideo_v3_print.pdf
Image: action_schulungsvideo_v3_print.pdf
  Format: PDF (Portable Document Format)
  Class: DirectClass
  Geometry: 612x859+0+0
  Resolution: 72x72
  Print size: 8.5x11.9306
  Units: Undefined
  Type: TrueColor
  Endianess: Undefined
  Colorspace: RGB
  Depth: 16/8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 8-bit
  Channel statistics:
    Red:
      min: 0 (0)
      max: 65535 (1)
      mean: 53873.6 (0.822058)
      standard deviation: 19276.7 (0.294144)
      kurtosis: 1.854
      skewness: -1.82565
    Green:
      min: 0 (0)
      max: 65535 (1)
      mean: 55385.6 (0.84513)
      standard deviation: 19274.6 (0.294112)
      kurtosis: 2.09868
      skewness: -1.91651
    Blue:
      min: 0 (0)
      max: 65535 (1)
      mean: 51020 (0.778516)
      standard deviation: 20077.7 (0.306367)
      kurtosis: 0.860627
      skewness: -1.52344
  Image statistics:
    Overall:
      min: 0 (0)
      max: 65535 (1)
      mean: 53426.4 (0.815235)
      standard deviation: 19546.7 (0.298263)
      kurtosis: 1.59453
      skewness: -1.75701
  Rendering intent: Undefined
  Interlace: None
  Background color: white
  Border color: rgb(223,223,223)
  Matte color: grey74
  Transparent color: black
  Compose: Over
  Page geometry: 612x859+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Undefined
  Orientation: Undefined
  Properties:
    date:create: 2011-09-14T15:38:57+02:00
    date:modify: 2011-09-14T15:38:57+02:00
    pdf:HiResBoundingBox: 612.283x858.898+0+0
    pdf:Version: PDF-1.5 
    signature: 210bfc9cf90e3b9505385f8b2267da1665b5c2de28bb5223311afba01718bbeb
  Artifacts:
    verbose: true
  Tainted: False
  Filesize: 1.577MBB
  Number pixels: 526KB
  Pixels per second: 52.57MB
  User time: 0.020u
  Elapsed time: 0:01.009
  Version: ImageMagick 6.6.5-6 2011-04-08 Q16 http://www.imagemagick.org

之后:

tbart@blackknight ~/orpheus/werbung/action $ pdf2pdfx action_schulungsvideo_v3_print.pdf
GPL Ghostscript 9.04 (2011-08-05)
Copyright (C) 2011 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1


tbart@blackknight ~/orpheus/werbung/action $ identify -verbose action_schulungsvideo_v3_print_X-3.pdf 
Image: action_schulungsvideo_v3_print_X-3.pdf
  Format: PDF (Portable Document Format)
  Class: DirectClass
  Geometry: 612x859+0+0
  Resolution: 72x72
  Print size: 8.5x11.9306
  Units: Undefined
  Type: ColorSeparation
  Base type: ColorSeparation
  Endianess: Undefined
  Colorspace: CMYK
  Depth: 16/8-bit
  Channel depth:
    cyan: 8-bit
    magenta: 8-bit
    yellow: 8-bit
    black: 8-bit
  Channel statistics:
    Cyan:
      min: 0 (0)
      max: 65535 (1)
      mean: 8331.78 (0.127135)
      standard deviation: 14902.2 (0.227392)
      kurtosis: 1.62171
      skewness: 1.7799
    Magenta:
      min: 0 (0)
      max: 62194 (0.94902)
      mean: 6739.34 (0.102836)
      standard deviation: 14517.5 (0.221523)
      kurtosis: 2.08183
      skewness: 1.93276
    Yellow:
      min: 0 (0)
      max: 65535 (1)
      mean: 13310.1 (0.203098)
      standard deviation: 17022.5 (0.259746)
      kurtosis: 0.991135
      skewness: 1.45216
    Black:
      min: 0 (0)
      max: 56540 (0.862745)
      mean: 7117.47 (0.108606)
      standard deviation: 16803.7 (0.256408)
      kurtosis: 3.02752
      skewness: 2.16554
  Image statistics:
    Overall:
      min: 0 (0)
      max: 65535 (1)
      mean: 8874.66 (0.135419)
      standard deviation: 15850.6 (0.241864)
      kurtosis: 2.17614
      skewness: 1.88139
  Total ink density: 292%
  Rendering intent: Undefined
  Interlace: None
  Background color: white
  Border color: cmyk(223,223,223,0)
  Matte color: grey74
  Transparent color: black
  Compose: Over
  Page geometry: 612x859+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Undefined
  Orientation: Undefined
  Properties:
    date:create: 2011-09-14T15:39:30+02:00
    date:modify: 2011-09-14T15:39:30+02:00
    pdf:HiResBoundingBox: 612.28x858.9+0+0
    pdf:Version: PDF-1.3 
    signature: 0416db7487ea147b974ece5748bc4284e82bfc3fb7cd07a4de050421ba112076
  Artifacts:
    verbose: true
  Tainted: False
  Filesize: 2.103MBB
  Number pixels: 526KB
  Pixels per second: 5.25708PB
  User time: 0.000u
  Elapsed time: 0:01.000
  Version: ImageMagick 6.6.5-6 2011-04-08 Q16 http://www.imagemagick.org

这是在64位的Gentoo系统上,使用gs 9.04。 也许这可以帮助你解决问题?

源PDF来自inkscape PDF导出,颜色被限制为ECI ISO coated v2中涵盖的颜色。 我将其用作inkscape缺少CMYK导出和缺少印前准备PDF/X输出的解决方法...


非常感谢您提供这么详细的答案和示例,@tbart - 希望在问题再次出现时能够尽快查看它 :) 干杯! - sdaau
2
注意,Ghostscript 9.05非常恶劣,并尝试在Ubuntu 12.04上打开/usr/share/ghostscript/9.05/lib/PDFX_def.ps - JB.
这个方法在将向量转换为CMYK时是否会保留它们,还是需要先栅格化? - johnp
意思是gs只改变颜色空间,但不改变颜色,对吗? - Adrian Lopez

4

好的,至少有一些内容可以翻译...

起初,我需要这样做来确保我的PDF文件是CMYK格式,并且将文本设置为“纯黑色”C:0,M:0,Y:0,K:100 - 因为我以前曾遇到过打印机抱怨我的Latex PDF中包含“富黑色”文本(因此费用更高)的问题。而我通常使用identify,因为它似乎是唯一一个可以解析PDF和颜色的工具(而且相对容易记忆)。

嗯,我阅读了Tech Tip: Using Ghostscript to Convert and Combine Files | Linux Journal;其中建议使用gstiffsep设备来获取分离效果。对我来说,这与identify具有相同的作用;我只需执行以下操作:

$ gs -sDEVICE=tiffsep -dNOPAUSE -dBATCH -dSAFER -r150x150 -sOutputFile=p%08d.tif test.pdf 

$ ls p*
p00000001.Black.tif  p00000001.Magenta.tif  p00000001.Yellow.tif  p00000001.Cyan.tif   p00000001.tif

$ eog p00000001.tif

我只需要使用左/右箭头就可以“迭代”分离图像,立即就能看出它是“纯黑色”还是“深黑色”。

这表明,无论identify显示什么,来自pdflatextest.pdf实际上将文本颜色设置为了“纯黑色”,正如它应该做的那样(其他分离图像为空白) - 但是,如果执行以下操作:

# do a conversion of original PDF
$ gs -dPDFA -dBATCH -dNOPAUSE -dNOOUTERSAVE -dUseCIEColor -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sOutputFile=out_pdfa.pdf test.pdf

# do a separation on the converted pdf
$ gs -sDEVICE=tiffsep -dNOPAUSE -dBATCH -dSAFER -r150x150 \
  -dFirstPage=1 -dLastPage=1 -sOutputFile=p%08d.tif out_pdfa.pdf

# view
$ eog p00000001.tif

通过使用identify命令,可以发现特定的out_pdfa.pdf实际上具有“丰富的黑色”-即文本油墨覆盖所有四个分离! (identify也将其显示为RGB)。

因此,我希望这种gs/tiffsep技术比identify更可靠 :)

 

注意:我正在使用Ubuntu Natty,它配备了GhostScript 9.01 - 然而,那个版本存在一个恶性错误:tiffsep崩溃(缺少lab.icc),请参考Bug 691857 – tiffsep crashes in Version 9 (missing lab.icc)。这已经在9.02中得到修复 - 并且9.02已发布为oneiric中的ghostscript。要在Natty下使用9.02,我遵循了如何使用apt-get更新单个软件包?- Ubuntu论坛的步骤:

sudo nano /etc/apt/sources.list # add deb http://archive.ubuntu.com/ubuntu/ oneiric main restricted
sudo apt-get update
sudo apt-get install ghostscript # this upgrades only gs and dependencies 
sudo nano /etc/apt/sources.list  # remove/comment oneiric repo
sudo apt-get update && sudo apt-get upgrade # should be back to normal here

请注意,使用有问题的9.01版本时,即使是这个命令也会失败:
$ GS_LIB=/usr/share/ghostscript/9.01/iccprofiles/ gs -sICCProfilesDir=/usr/share/ghostscript/9.01/iccprofiles/ -sDEVICE=tiffsep -dNOPAUSE -dBATCH -dSAFER -sOutputFile=p%08d.tif out_pdfa.pdf

...
sfopen: gs_parse_file_name failed.
sfopen: gs_parse_file_name failed.
... gsicc_open_search(): Could not find lab.icc ...

使用9.02版本,无需显式指定sICCProfilesDir


2

我发现ghostscript的命令行相当令人困惑,在网上搜索得到了很多类似的、有时是冲突的建议,其中大部分对我都无效。

在我的情况下,我从一个纯黑或白的SVG(所有矢量图和文本)开始。使用CairoSVG将其转换为PDF会生成一个RGB PDF。

我找到的最小的ghostscript(版本9.50)命令来执行转换为CMYK(或“单板”黑色)是:

gs -q -sDEVICE=pdfwrite -sColorConversionStrategy=CMYK -o <output.pdf> <intput.pdf>

注意:

  • -sColorConversionStrategy=Gray会生成一个“单色板”,仅包含黑色的文件(这实际上是我在这种情况下想要的)。
  • -o设置输出文件与-sOutputFile开关不同。
  • <input_file.pdf>不能与<output_file.pdf>是同一个文件;如果这样做,将得到一个空白的PDF。
  • 在我的情况下,我不想保留CairoSVG生成的中间RGB PDF,所以我这样做:cairosvg <input_file.svg> -f pdf | gs -q -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -o <output_file.pdf> -;ghostcript命令末尾的-告诉它从标准输出中获取输入。

为了验证我得到了我想要的PDF文件,我使用Adobe Acrobat的Preflight检查,如此处建议的那样,转换为PDF/X格式,该格式不支持RGB颜色。


2
我也被这个问题折磨得发疯了。我尝试了@tbart的示例,但它只适用于一些输入pdf文件(似乎已经包含图像,无论是rgb还是其他格式的),而对于另一些则不行。具体来说,让我们看看这个超级简单的ps文件:
%!PS
/Times-Roman findfont 30 scalefont setfont
72 680 moveto
0.81 0.72 0 0 setcmykcolor
(This is text!) show
showpage

如果我把这个文件命名为test1.ps,然后在Windows上运行这个命令(使用gs 9.14):
gswin64c -dEmbedAllFonts=true -dPDFX -dBATCH -dNOPAUSE -dNOOUTERSAVE -sDEVICE=pdfwrite -dProcessColorModel=/DeviceCMYK -sOutputICCProfile=CoatedGRACoL2006.icc   -sColorConversionStrategy=CMYK -sColorConversionStrategyForImages=CMYK -sOutputFile=test1.pdf PDFX_def.ps test1.ps

如果您在Linux/Cygwin上,请将gswin64c替换为gs。

我正在使用的CMYK ICC位于PDFX_def.ps和上面的命令中。您可以从这里获取它,但它只是moo想要用于他们的卡片的随机ICC,似乎没有特别之处:http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=4075&fileID=3790

使用此文件生成的test1.pdf在Illustrator中作为CMYK pdf加载,但identify -verbose说它是sRGB。如果我执行@sdaau的tiffsep操作,它会写出分离并具有正确的值。

所以,我不知道。

有人能否将此ps文件转换为identify可以识别的CMYK pdf?

克里斯


编辑:哇。我可能已经弄清楚并修复了它。看起来identify只是在PDF文件中寻找/ColorSpace /DeviceCMYK,所以如果我修改PDFX_def.ps以输出它,identify就会称其为CMYK。因此,在查看工作的pdf时,我发现如果它们有这行,identify就能工作,如果没有,它们会被错误地标记为sRGB。
在PDFX_def.ps的末尾添加/ColorSpace /DeviceCMYK行。
[/_objdef {OutputIntent_PDFX} /type /dict /OBJ pdfmark
[{OutputIntent_PDFX} <<
  /ColorSpace /DeviceCMYK          % convince ImageMagick's identify that it's CMYK
  /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 TR 003)      % 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
不幸的是,当我这样做时,我的PDF文件会变成光栅化。有没有办法避免这种情况? - Pedro M Duarte
谢谢你,@ChrisHecker - 我还没有测试过,但很高兴有这个写下来... 干杯! - sdaau
1
@PedroMDuarte: (1) identify 是 ImageMagick 的一部分。(2) ImageMagick 不能单独处理 PDF 输入(它只能直接处理光栅图像)-- 它利用 Ghostscript 作为其所有 PDF 输入的“代理”,即使是对 PDF 进行 identify。 (3) 当 ImageMagick 获得 PDF 输入时,它会首先调用 Ghostscript 将其转换为(一系列)完整页面的光栅图像,然后继续处理这些图像。(4) 您无法直接控制 ImageMagick 用于运行 Ghostscript 的确切命令(它可能会不经意地将 CMYK 输入重新转换为 RGB)。 - Kurt Pfeifle

1
重新审视使用PDF/X-3进行CMYK转换的问题,因为我有另一个打印作业在排队等待,我发现以下内容:
如果只需要CMYK,请避免使用X-3。它不支持透明度(https://en.wikipedia.org/wiki/PDF/X),而且您将获得的青色调图像既不令人满意,也不符合任何标准。如果您拥有Alpha、Opacity、Gradients,请不要转换为PDF/X-3,除非您的印刷店绝对需要。
如果确实需要pdf/X,则需要将其栅格化并选择X-3。在“众所周知的工具链”(imagemagick、inkscape、gimp等)中,我所知道的Linux/免费软件产品中没有X-4。
然而,我仍在努力解决定义的丰富黑色,例如60%C、60%M、40%Y、100%K——这是这里印刷店的一种相当典型的标准。每当我在inkscape中设置它时,它就会在导出到RGB时消失(这是cairo的限制)。
尽管如此,这似乎让我接近他们的期望:
#!/bin/bash

# possibly ps2ps2 for keeping fonts?
pdf2ps -sOutputFile=- "$1" | gs \
-dPDFX \
-dBATCH \
-dNOPAUSE \
-dNOOUTERSAVE \
-dPDFSETTINGS=/prepress \
-dCompatibilityLevel=1.4 \
-sDEVICE=pdfwrite \
-sColorConversionStrategy=CMYK \
-sProcessColorModel=DeviceCMYK \
-dHaveTransparency=false \
-sOutputFile="${1%%.pdf}_X-3.pdf" \
PDFX_def.ps \
-

任何关于真正的CMYK创建到CMYK-PDF输出工作流程的见解仍然非常受欢迎。Scribus不是一个真正的解决方案,因为它在正确导入inkscape SVG时存在很多问题。除此之外,scribus在创建CMYK-PDF方面做得相当好。

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