Batch file 在.bat文件中使用ghostscript压缩PDF-缺少文本

Batch file 在.bat文件中使用ghostscript压缩PDF-缺少文本,batch-file,cmd,ghostscript,Batch File,Cmd,Ghostscript,我正试图压缩PDF文件并用.bat脚本将其灰度化,我遇到了一个大问题 当我进行压缩时,PDF中的文本变为红色,当我添加灰度线时,脚本完成其工作后,文本变为白色/消失 有人能帮我把它修好,使文字仍然是黑色的吗?我的脚本部分: gs -sDEVICE=pdfwrite -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -sOutputICCProfile=sgray.icc -dPDFSETTINGS=/ebook -dCom

我正试图压缩PDF文件并用.bat脚本将其灰度化,我遇到了一个大问题

当我进行压缩时,PDF中的文本变为红色,当我添加灰度线时,脚本完成其工作后,文本变为白色/消失

有人能帮我把它修好,使文字仍然是黑色的吗?我的脚本部分:

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时

您绝对不应该设置-soutputicprofile

将PDFCompatibilityLevel设置为高于pdfwrite设备已经设置的值是没有意义的,除非您通过需要更高级别的pdfmark操作符添加内容(而您没有这样做)

设置CompressFonts=true或EmbedAllFonts=true也没有意义,因为这是默认值

当你试图诊断一个问题时,不要沉默,你希望Ghostscript告诉你任何它认为可能是问题的东西

在Windows上(我认为这是因为您正在谈论一个.bat文件),Ghostscript可执行文件称为gswin32、gswin32 C、gswin64或gswin64c,而不是gs。所以我有点困惑,你是怎么想的;We’我们根本没法让它发挥作用

您在设置-sColorConversionStrategy之后设置了-dPDFSETTINGS=/ebook,如果您查看中的设置表,您将看到/ebook设置将颜色转换strtegy设置为RGB,因为这在命令行中比您的颜色转换策略来得晚,这才是最重要的。ProcessColorModel(命令行中的DeviceGray)和ColorConversionStrategy(PDFSETTINGS值中的RGB)之间的混淆很可能是导致问题的原因

当遇到这种问题时,我建议您简化命令行,直到您弄清楚到底是什么导致了它。我还建议您根本不要使用PDFSETTINGS,因为这会同时更改许多配置控件。找出要使用的选项,然后逐个打开


最后一点,Ghostscript的pdfwrite设备不会“压缩”PDF文件,而是通过输入生成PDF文件。如果您选择采取诸如降低图像采样或改变颜色空间等措施,则新的PDF文件可能比输入的PDF文件小。虽然它不是压缩的,但它较小,因为您已经丢弃了信息。

谢谢,这是很多信息。我使用cygwin的ghostscript 9.27,这就是gs工作的原因。我现在会尝试检查所有选项,但你已经帮了我很多。