我很难将ImageMagick的identify
识别为CMYK。
基本上,假设我正在使用test.tex
构建此文件pdflatex
:
\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值的直方图(尽管可以说,它们都接近灰色)?
所以没关系,然后我尽管我最好尝试使用ghostscript
将test.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 - 有关使用{{生成此类PDF文件的命令行示例,请参阅CMYK poster example: fitting pdf page size to (bitmap) image size? #17843 - TeX - LaTeX - Stack Exchange 1}}和convert
。事实上,我们可以执行:
gs
...此 会产生一张PDF convert test.pdf -depth 8 -colorspace cmyk -alpha Off test-c.pdf
为CMYK - 然而,PDF也会被栅格化(默认为72 dpi)。
identify
...实际上会产生一个CMYK pdf,由# Color PDF to CMYK:
gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \
-sColorConversionStrategy=CMYK -dProcessColorModel=/DeviceCMYK \
-sOutputFile=output.pdf input.pdf
报告(尽管黑色会在所有四个通道上变得丰富,而不是明白);但是,当幻灯片添加了图像时,此命令将仅 (显然,它是触发颜色转换的那个?!)!有趣的是,我无法从identify
PDF获得相同的效果。
所以我猜我的问题可以通过两种方式提出:
pdflatex
中被识别为(因此将构建CMYK颜色的正确直方图) )identify
的命令行Linux工具,即使在来自identify
的原始test.pdf
中也可以正确识别CMYK颜色的使用(并且可能构建颜色直方图,基于任意选择的PDF页面,如pdflatex
应该)?提前感谢您的回答,
干杯!
一些参考文献:
例如是否指定为“0 0 0” 1 setcmykcolor“?或者可能更像是”0 0 0 setrgbcolor“? 后一种情况,如果是DeviceRGB,你最终会得到一个丰富的黑色文本 重新映射到基于CIE的色彩空间,以获得RGB图像颜色 管理。
答案 0 :(得分:24)
sdaau,您用于尝试将PDF转换为CMYK的命令不正确。试试这个:
gs \
-o test-cmyk.pdf \
-sDEVICE=pdfwrite \
-sProcessColorModel=DeviceCMYK \
-sColorConversionStrategy=CMYK \
-sColorConversionStrategyForImages=CMYK \
test.pdf
如果颜色转换无法正常工作,并且您看到的消息如“无法将色彩空间转换为灰色,将策略还原为LeaveColorUnchanged”那么......
在这种情况下,将 -dOverrideICC
添加到命令行,看看它是否会根据需要更改结果。
正如@Marein评论的那样,如果你想避免出现在图像中的JPEG工件(之前没有),你应该添加
-dEncodeColorImages=false
进入命令行。
(对于几乎所有GS PDF-&gt; PDF 处理都是如此,不仅仅适用于这种情况。因为GS默认情况下会创建一个包含新构造对象和新文件结构的全新文件要求生成PDF输出 - 它并不是简单地重复使用以前的对象,因为像pdftk
这样更“愚蠢”的PDF处理器 {pdftk
还有其他优点,不过误解了我的陈述!} 。默认情况下GS应用JPEG压缩 - 查看当前的 Ps2pdf documentation 并搜索“ColorImageFilter”来学习关于更多细节...)
答案 1 :(得分: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涂层v2中涵盖的颜色。 我使用它作为缺乏CMYK导出inkscape和缺乏印前准备PDF / X输出的解决方法......
答案 2 :(得分:2)
好的,这是至少......
最初,我需要这个来确保我的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;建议使用tiffsep
gs
设备获取分色。对我而言,这与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
显示什么,test.pdf
pdflatex
实际上都有'纯黑'作为文字颜色,因为它应该是(其他分隔是空白) - 然而,做类似的事情:
# 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
...将揭示特定的out_pdfa.pdf
实际上有'丰富的黑色' - 即文本的墨水遍及所有四个分色! (identify
也将此显示为RGB)。
所以,我希望这种gs/tiffsep
技术比identify
:)更可靠。
<子>
注意:我使用的是运行GhostScript 9.01的Ubuntu Natty - 但是,tiffsep
:Bug 691857 – tiffsep crashes in Version 9 (missing lab.icc)有一个令人讨厌的错误。这已经修复为9.02 - 而9.02已经发布为ghostscript in oneiric。要在Natty下使用9.02,我遵循how to update a single package using apt-get? - Ubuntu Forums:
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
。
子>
答案 3 :(得分:2)
我也因此而疯狂。我完全尝试了@ tbart的例子,但它仅适用于某些输入pdfs(看似已包含图像,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,但是识别-verbose表示它是sRGB。如果我做@ sdaau的tiffsep事情,它会写出分色,并且它们具有正确的值。
所以,我不知道。
任何人都可以将此ps文件转换为识别识别的CMYK pdf吗?
克里斯
在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
动臂。我希望这与兼容性或任何事情都不会做任何奇怪的事情。
答案 4 :(得分:1)
再次使用PDF / X-3重新访问CMYK转换,因为我在队列中有另一个打印作业,这让我发现以下内容:
如果您只需要CMYK,请避免使用X-3。 它不支持透明度(https://en.wikipedia.org/wiki/PDF/X),您将获得的青色着色图像既不令人满意,也不会真正符合任何标准。如果您有alpha,不透明度,如果您的打印店不是绝对需要,渐变不会转换为PDF / X-3。
如果你确实需要pdf / X,你需要光栅化并使用X-3。在“知名工具链”(imagemagick,inkscape,gimp等)中我所知道的Linux /免费软件产品上没有X-4。
然而,我仍在与定义丰富的黑色,f.ex。 60%C,60%M,40%Y,100%K - 这是印刷厂的典型标准。每当我在inkscape中设置它时,它会在导出后立即消失(到RGB;开放限制)
尽管如此,这似乎让我接近他们所期望的:
#!/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-PDF输出工作流程的真正CMYK创建的任何见解仍然非常受欢迎。 Scribus不是真正的解决方案,因为它正确地导入了inkscape SVG有很多问题。除此之外,scribus在创建CMYK-PDF方面做得不错。
答案 5 :(得分:0)
我发现 ghostscript
的命令行非常混乱,为此在谷歌上搜索了很多类似的、有时相互矛盾的建议,其中大部分对我不起作用。
就我而言,我从纯黑色或白色 SVG(所有矢量 + 文本)开始。使用 CairoSVG 将其转换为 PDF 会生成 RGB PDF。
我发现执行转换为 CMYK(或仅“单板”黑色)的最低 ghostscript
(版本 9.50)命令是:
gs -q -sDEVICE=pdfwrite -sColorConversionStrategy=CMYK -o <output.pdf> <intput.pdf>
注意事项:
-sColorConversionStrategy=Gray
将制作一个“单板”、纯黑色文件(这正是我想要的)。-o
设置输出文件与 -sOutputFile
开关不同。<input_file.pdf>
不能与 <output_file.pdf>
为同一个文件;如果你这样做,你会得到一个空白的 PDF。cairosvg <input_file.svg> -f pdf | gs -q -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -o <output_file.pdf> -
; ghostcript 命令末尾的 -
告诉它从标准输出获取输入。为了验证我最终得到的是我想要的 PDF 文件,我按照建议使用了 Adobe Acrobat 的预检检查 here,将其转换为不支持 RGB 颜色的 PDF/X 格式。