我想要打印文档的地方需要提供 CMYK 格式的 PDF。文档大部分是文本,除了一些以TikZ
或 格式绘制的图表和图解pgfplots
。
正如本论坛所建议的,调用\usepackage[cmyk]{xcolor}
应该可以解决问题,但我无法验证我生成的文档确实是使用 CMYK 设置的。使用imageMagick
,PDF 报告为:
$ identify -verbose test.pdf | grep Colorspace
Colorspace: Gray
Colorspace: sRGB
[... lots of Colorspace: sRGB lines here ...]
我尝试了接受的答案中提供的命令stackoverflow 上的这个帖子:
$ gs -o test-cmyk.pdf -sDEVICE=pdfwrite -sProcessColorModel=DeviceCMYK -sColorConversionStrategy=CMYK -sColorConversionStrategyForImages=CMYK test.pdf
但调用时的结果identify
是一样的:每个颜色空间都报告为。当我直接使用尝试转换 PDFColorspace: sRGB
时也会发生同样的情况:imageMagick
$ convert in.pdf -profile "/usr/share/ghostscript/9.07/iccprofiles/default_cmyk.icc" out.pdf
我在这个频道里找到了一些讨论,特别是下面两个。但是,它们都没有给我一个最终答案,告诉我如何检查我的 PDF 是否确实使用了 CMYK 颜色模型。
xcolor 包的 cmyk 选项不会生成 CMYK PDF
具体来说,后者建议使用命令\pdfcompresslevel=0
。问题是,它显然XeLaTeX
不喜欢该命令:
! Undefined control sequence.
l.4 \pdfcompresslevel
=0
答案1
以下是bash
检查 RGB 颜色实例的快速脚本:
#!/bin/sh
pdftops $1.pdf -eps $1.eps
status=$(grep -o "RGB" $1.eps | wc -l)
echo "$status instance(s) of RGB colorspaces found in file $1.eps"
exit $status
还有一个.bat
适用于 Windows 的版本:
@echo off
pdftops %1.pdf -eps %1.eps
type %1.eps | find "RGB" /c > __my%1.tmp
set /p status=<__my%1.tmp
del __my%1.tmp
echo %status%
exit /b %status%
TeX Live 包含一份pdftops
;MikTeX/其他用户需要下载 的 Windows 移植版并将其放置在其路径上pdftops
。其中一个移植版作为xpdf
。
这个解决方案可能并不完美,但这是我能想到的不需要 Adobe Acrobat Pro 的最好的办法。
用法:
基于 Unix/Linux:
$ sh checkcolorspace test
视窗:
> checkcolorspace.bat test
解释:
/DeviceGray
转换为 EPS 会生成一个易于解析的纯文本文件。所有颜色信息都以、/DeviceCMYK
或之一列出/DeviceRGB
。通过查找RGB
条目,我们可以确定 PDF 中是否任何地方使用了 RGB。
测试文件:
\documentclass{article}
\usepackage[
cmyk, % uncomment _one_ of these only,
% rgb, % for testing purposes
]{xcolor}
\begin{document}
\textcolor{red}{test}
\textcolor{green}{test}
\textcolor{blue}{test}
\textcolor{cyan}{test}
\textcolor{magenta}{test}
\textcolor{yellow}{test}
\textcolor{black}{test}
\end{document}