通过命令行将 pdf 转换为单色黑白

通过命令行将 pdf 转换为单色黑白

我有一个 65 页的 PDF 文件,其中的文本是深灰色的。(实际文本,而不是文本的图片/图像。)使用我的黑白打印机打印时,文本变得模糊不清,因为打印机试图使文本颜色变浅。我可以逐页解决此问题,方法是将页面导入 Inkscape,选择所有路径,单击“黑色”(将所有颜色(包括灰色调)转换为纯黑色),然后导出回 PDF。

有没有办法在命令行中的 inkscape 中执行这些步骤(用于批处理)?

有没有办法达到同样的效果(将 pdf 转换为黑白,1 位如何在没有 Inkscape 的情况下绘制灰度图?


编辑。还有类似的问题在Unix.SE上在超级用户上,使用 Ghostscript。但是,这些仅通过选项将文件转换为灰度 -sColorConversionStrategy=Gray。该选项-sColorConversionStrategy=/Mono导致错误Unrecoverable error: rangecheck in .putdeviceprops。由于我的文件已经是灰度的,因此这些无法解决我的问题。

答案1

这个答案超级用户给出的答案对我有用,2 分钟内我没有得到关于这个问题的其他答案。感谢 goyinux 提供原始答案。

gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -sColorConversionStrategy=Gray \
 -dProcessColorModel=/DeviceGray \
 -dCompatibilityLevel=1.4 \
 -dNOPAUSE \
 -dBATCH \
 input.pdf

答案2

这对 GhostScript 10 有效,它显然在 2022 年增加了对矢量变黑的支持:

gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -dBlackText -dBlackVector \
 -dNOPAUSE -dBATCH \
 input.pdf

答案3

适应这个答案在 SuperUser 上,这可以通过使用重新定义的命令将 PDF 转换为 PostScript 并转换回来来实现setrgbcolor

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

答案4

我已经编写了一个 shell 脚本来转换任何pdf 转单色 即变成纯黑白色。请检查一下,如果遇到任何问题请告诉我。

相关内容