使用 ghostscript 将 PDF 转换为黑白格式

使用 ghostscript 将 PDF 转换为黑白格式

与这个问题类似:

在 FLOSS 的命令行上将 PDF 转换为灰度?

我有一个 PDF 文档,想将其转换为纯黑白色。因此我想丢弃半色调。要使用 ghostscript 转换为灰度,我可以使用以下命令:

gs \
 -sOutputFile=output.PDF \
 -sDEVICE=pdfwrite \
 -sColorConversionStrategy=Gray \
 -dProcessColorModel=/DeviceGray \
 -dCompatibilityLevel=1.4 \
  input.PDF < /dev/null

我必须做什么改变才能获得单色,例如只有黑白色而没有半色调?

答案1

最后的建议确实只转换为灰度,并且仅在底层文档使用时才有效设置RGB颜色。这对我来说不起作用,因为我有一个文档,使用设置颜色

我成功地重新定义了设置颜色始终将颜色设置为 0,0,0:

gs -o <output-file.pdf> -sDEVICE=pdfwrite \
-c "/osetcolor {/setcolor} bind def /setcolor {pop [0 0 0] osetcolor} def" \
-f <input-file.ps>

距离我上次进行 PostScript 黑客攻击已经过去了 15 年多的时间,因此上述内容可能不准确、不正确甚至是偶然的 - 如果您知道如何做得更好,请提出建议。

答案2

我不确定以下建议是否有效...但也许值得尝试:

  1. pdf2ps使用简单的实用程序将 PDF 转换为 PostScript
  2. 使用重新定义的/setrgbcolorPostScript 运算符将 PostScript 转换回 PDF

这些是命令:

第一的

  pdf2ps color.pdf color.ps

color.ps为您提供了输出。

第二

gs \
-o bw-from-color.pdf \
-sDEVICE=pdfwrite \
-c "/setrgbcolor{0 mul 3 1 roll 0 mul 3 1 roll 0 mul 3 1 roll 0 mul add add setgray}def" \
-f color.ps

答案3

这不是 ghostscript,但使用 imagemagick 非常简单:

 convert -monochrome input.pdf output.pdf

答案4

这看起来是可行的:

1)使用gs

gs -sDEVICE=psmono \
  -dNOPAUSE -dBATCH -dSAFER \
  -sOutputFile=combined.ps \
  first.pdf \
  second.ps \
  third.eps [...]

ps2pdf3)使用或将 Postscript 文件转换回 PDFgs

(归功于:http://www.linuxjournal.com/content/tech-tip-using-ghostscript-convert-and-combine-files

相关内容