【发布时间】:2012-05-15 11:56:41
【问题描述】:
如果 pdf 确实包含颜色,我需要将其转换为灰度。 为此,我找到了一个脚本,可以确定 pdf 是否已经是灰度。
convert "source.pdf" -colorspace RGB -unique-colors txt:- 2> /dev/null \
| egrep -m 2 -v "#([0-9|A-F][0-9|A-F])\1{3}" \
| wc -l
这会计算文档中存在多少具有不同 RGB 值(因此它们不是灰色)的颜色。
如果 pdf 还不是灰度文档,我会继续使用 ghostscript 进行转换
gs \
-sOutputFile=temp.pdf \
-sDEVICE=pdfwrite \
-sColorConversionStrategy=Gray \
-dProcessColorModel=/DeviceGray \
-dCompatibilityLevel=1.4 \
-dNOPAUSE \
-dBATCH \
source.pdf < /dev/null
如果我使用 PDF 查看器打开输出文档,它会正确显示没有颜色。但是,如果我在新生成的文档上尝试第一个脚本,结果发现它仍然包含一些颜色。如何将文档转换为精确的灰度?我需要这个,因为如果我使用彩色打印机打印此文档,打印机将使用彩色而不是黑色来打印灰色。
【问题讨论】:
-
你能解释一下你的
egrep声明的意图是什么吗? -
我多次使用这个 ghostscript 开关将 RGB 颜色空间转换为 GRAYSCALE,然后用 Callas preflight 软件检查。不要相信 imagemagick,这些开关可以毫无痛苦地工作
标签: pdf imagemagick ghostscript grayscale