使用Ghostscript将PDF转换为黑白


21

与此问题类似:

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

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

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

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

Answers:


6

最后的建议确实只能转换为灰度,然后仅在基础文档使用setrgbcolor时才有效。这对我不起作用,因为我有一个使用setcolor的文档。

我成功地重新定义了setcolor以始终将颜色设置为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年了,因此以上内容可能有些la脚,不正确,甚至是偶然的-如果您知道如何做得更好,请提出建议。


3

我不确定以下建议是否会起作用...但是可能值得尝试:

  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

我尝试过此方法,但仍然留下灰色阴影。尼克拉斯菲想要单色。
frabjous 2011年

3

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

 convert -monochrome input.pdf output.pdf

10
产生的pdf质量比原始质量差很多。
Hindol

convert -monochrome -denisty 600
伊利亚w495 Nikitin

这似乎在做半色调。我希望将所有颜色(但白色)都转换为黑色,而无论黑暗如何。
g.rocket '18



0

对于纯黑白PDF,您需要先将其转换为ps格式,然后再转换为PDF作为后记:

exec(" gs -sDEVICE=psmono  -dNOPAUSE -dBATCH -dSAFER  -sOutputFile=combined.ps  $pdf");

后记为PDF->黑白

exec(" gs -sDEVICE=pdfwrite   -dNOPAUSE -dBATCH -dSAFER  -sOutputFile=file_pdf.pdf  filename.ps");
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.