我不确定这是否是发布此问题的正确位置。
我试图减少多个7MB PDF文件的大小,所以我尝试了在网上找到的这个ghostscript命令:
simple ghostscript with printer quality setting
gswin32c.exe -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
tried this
gswin32c.exe -o output.pdf -sDEVICE=pdfwrite -dColorConversionStrategy=/LeaveColorUnchanged -dDownsampleMonoImages=false -dDownsampleGrayImages=false -dDownsampleColorImages=false -dAutoFilterColorImages=false -dAutoFilterGrayImages=false -dColorImageFilter=/FlateEncode -dGrayImageFilter=/FlateEncode input.pdf
and this
gswin32c.exe -o output.pdf -sDEVICE=pdfwrite -dColorConversionStrategy=/LeaveColorUnchanged -dEncodeColorImages=false -dEncodeGrayImages=false -dEncodeMonoImages=false input.pdf
但是在所有情况下,获得的PDF文件都是“更大”的。原来的。 所有这些pdf文件基本上都是扫描图像的集合,所以我可能需要一个特定的选项来告诉' ghostscript压缩它们?
我发现奇怪的是使用幻影版的试用版pdf我能够将尺寸减小到2-5MB而不会有明显的质量损失。
我如何对ghostscript做同样的事情?
答案 0 :(得分:0)
首先,Ghostscript(或更准确地说,Ghostscript的pdfwrite设备)不会“缩小”PDF文件,它会使新的文件变小或变小。
其次,几乎无法说出PDF文件可能会发生什么,而无需查看示例。
如果您的文件确实是扫描图像,那么(假设合理的初始压缩)可能无法在不降低质量的情况下缩小文件大小。你可能没有注意到质量下降,特别是如果你只是在屏幕上观看,但它会在那里。
使用在线运行的命令行进行随机戳可能不会产生有用的输出;你真的需要了解原始文件中使用大小的位置,然后选择可能会减少它的选项。
例如,您说这些页面是扫描图像;只有两种现实的方法可以缩小图像的大小,将其下采样到较低的分辨率,或选择不同的(更有效,可能有损,压缩)。 Ghostscript已经压缩了图像数据(除非你告诉它不要)。
后两个命令行明确禁用图像下采样,因此它们不太可能减小扫描图像的大小。 (默认情况下,pdfwrite设备不会对图像进行下采样,我们会尝试保持质量)
中间选项禁用自动压缩,并选择Flate压缩。如果您的图像以前是JPEG压缩的,或者不是连续色调图像,那么这可能是合理的。
您还说PDF文件变大了,很可能是因为使用了压缩对象流和外部参照,这是pdfwrite设备不支持的PDF 1.5功能。但是它不太可能为你节省太多空间。
我认为最可能的区别是'幻影PDF'正在使用更积极的下采样,您可以使用pdfwrite重现。
当然,我假设您使用的是最新版本的Ghostscript。不出所料,旧版本的表现不如最近版本。