我很难让ImageMagick identify识别PDF为CMYK。
identify
从本质上讲,让我们说我建这个文件test.tex,具有pdflatex:
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。对于以上来源:
test.pdf
$ 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 ... 部分,则几乎会发生同样的情况。但是,如果文档中只有一种颜色(黑色),我看不到identifyRGB值的直方图在哪里出现(尽管可以说所有这些都接近于灰色)?
\immediate\pdfobj stream ...
因此不要紧,我虽然最好尝试ghostscript将转换test.pdf为新的pdf,但该pdf会被CMYK识别identify-但即使如此,也没有运气:
ghostscript
$ 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颜色空间!
Type: Grayscale
Type: Palette
随着这个,注意identify 是 能够正确上报CMYK PDF -见CMYK海报例如:安装PDF页面大小为(位图)图像尺寸?#17843-TeX-LaTeX-Stack Exchange,其中提供了使用convert和生成此类PDF文件的命令行示例gs。实际上,我们可以执行:
convert
gs
convert test.pdf -depth 8 -colorspace cmyk -alpha Off test-c.pdf
…,这 将 产生一个将被identify编辑为CMYK的PDF-但是,该PDF也将被光栅化(默认为72 dpi)。
编辑:我刚刚发现,如果我在OpenOffice中创建一个.odp演示文稿,并将其导出为PDF;该PDF默认为RGB,但是,以下命令(来自ghostscript示例|生产猴子):
# Color PDF to CMYK: gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \ -sColorConversionStrategy=CMYK -dProcessColorModel=/DeviceCMYK \ -sOutputFile=output.pdf input.pdf
…实际上将产生CMYK pdf,其报告如下identify(尽管在所有四个通道上,黑色都将丰富而不是纯色);但是,此命令 仅 在幻灯片具有添加的图像 时才有效 (显然,它是触发颜色转换的图像!!)!有趣的是,我无法从pdflatexPDF中获得相同的效果。
所以我想我的问题可以通过两种方式提出:
预先感谢您的任何回答,
sdaau,您用于尝试将PDF转换为CMYK的命令不正确。尝试以下一项:
gs \ -o test-cmyk.pdf \ -sDEVICE=pdfwrite \ -sProcessColorModel=DeviceCMYK \ -sColorConversionStrategy=CMYK \ -sColorConversionStrategyForImages=CMYK \ test.pdf
如果颜色转换无法正常工作,并且您看到类似 “无法将颜色空间转换为灰色,将策略还原为LeaveColorUnchanged”的消息, 则…
在这种情况下,请添加 -dOverrideICC 到命令行,然后查看它是否根据需要更改了结果。
-dOverrideICC
为了避免在图像中出现 JPEG 伪像(以前没有),请添加:
-dEncodeColorImages=false
进入命令行。
(这对几乎所有GS PDF- > PDF_处理都是正确的,而不仅是在这种情况下。因为默认情况下,GS会在要求生成PDF输出时使用新建对象和新文件结构创建一个全新文件,但不会简单地重新使用以前的对象,更多的“哑” PDF处理器一样pdftk不 {pdftk还有其他的好处不过,别误会我的发言!} GS默认为使用JPEG压缩-在当前的外观 PS2PDF文档 和搜索 “ ColorImageFilter”_ 以了解更多详细信息…)
pdftk