![使用 ghostscript 将 PDF 转换为黑白格式](https://linux22.com/image/1253971/%E4%BD%BF%E7%94%A8%20ghostscript%20%E5%B0%86%20PDF%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%E9%BB%91%E7%99%BD%E6%A0%BC%E5%BC%8F.png)
与这个问题类似:
我有一个 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
我不确定以下建议是否有效...但也许值得尝试:
pdf2ps
使用简单的实用程序将 PDF 转换为 PostScript- 使用重新定义的
/setrgbcolor
PostScript 运算符将 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 [...]
ps2pdf
3)使用或将 Postscript 文件转换回 PDFgs
(归功于:http://www.linuxjournal.com/content/tech-tip-using-ghostscript-convert-and-combine-files)