我试图压缩PDF文件,并把它灰度与.bat脚本,我有很大的问题。
当我做压缩,PDF中的文字变成红色,当我添加灰度线,脚本完成其工作后,文字是whiteGone。
谁能帮我解决这个问题,让文字仍然是黑色的?我的脚本部分。
gs -sDEVICE=pdfwrite -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -sOutputICCProfile=sgray.icc -dPDFSETTINGS=/ebook -dCompatibilityLevel=1.7 -dCompressFonts=true -dEmbedAllFonts=true -dNOPAUSE -dQUIET -dBATCH -dAutoRotatePages=/None -sOutputFile="%TEMP%\%%~nxf" "%%~f"
下面是压缩前和压缩后的图像。
你还没有说你使用的Ghostscript的版本。您没有提供 PDF 文件,因此无法对其进行调查(图片可能会显示问题,但对诊断或修复它没有帮助)。
你不应该设置 -dProcessColorModel,尤其是当你设置了 -sColorConversionStrategy时。
你绝对不应该设置-sOutputICCProfile。
设置PDFCompatibilityLevel比pdfwrite设备已经设置的更高是没有意义的,除非你是通过pdfmark操作符来添加内容,这需要更高的级别(你没有这样做)。
也没有必要设置CompressFonts=true或EmbedAllFonts=true,因为这些是默认值。
当您试图诊断问题时,不要使用-dQUIET,您希望Ghostscript能告诉您任何它认为可能存在的问题。
在Windows上(我认为这是因为你说的是一个.bat文件),Ghostscript可执行文件被称为gswin32,gswin32c,gswin64或gswin64c,而不是gs。所以我有点不明白你是如何让这个工作的。
你已经设置了 -dPDFSETTINGS=ebook 之后 设置-sColorConversionStrategy,如果你看一下设置表中的 文件 你会看到,电子书设置将颜色转换strtaegy设置为RGB,因为这在命令行中的出现时间比 你的 ColorConversionStrategy,那是优先的。ProcessColorModel(DeviceGray,来自你的命令行)和ColorConversionStrategy(来自PDFSETTINGS值的RGB)之间的混淆很可能是导致你的问题的原因。
面对这种问题,我建议你简化命令行,直到你弄清楚到底是什么原因造成的。我还建议你完全不要使用PDFSETTINGS,因为它改变了 众多 一次性地配置控制。想好你要使用哪些,然后分别打开它们。
最后一点,Ghostscript的pdfwrite设备并不 "压缩 "PDF文件,它从它的输入中生成PDF文件。如果您选择采取诸如降低图像采样或改变色彩空间的行动,那么新的PDF文件有可能比输入的PDF文件小。但它并没有被压缩,它的体积更小,因为你已经丢弃了信息。