ghostscript pdfwrite 指定 jpeg 质量

ghostscript pdfwrite specify jpeg quality

我正在尝试连接多个 pdf 文件,这些文件基本上是包含 jpg 图像的相册页面。对于我的输出 pdf 文件,我希望将图像分辨率调整为 300 dpi,并希望保持最佳质量。我使用的命令是:

gswin64c.exe -dNOPAUSE -dBATCH ^-dDownsampleColorImages=true -dColorImageResolution=300 ^-dDownsampleGrayImages=true -dGrayImageResolution=300 ^-dDownsampleMonoImages=true -dMonoImageResolution=300 ^-sDEVICE=pdfwrite -dJPEGQ=100 -sOutputFile=out.pdf in1.pdf in2.pdf

但是,-dJPEGQ=100 似乎对输出没有影响。更改此参数会导致相同的文件大小,并且在所有值的图像中都可以看到伪影。 运行 带有选项 -dPDFSETTINGS=/printer 的命令我得到了更好的结果而没有伪影,但是这个选项也应该导致 300 dpi。那么指定输出文件中 jpg 图像质量的正确命令是什么?

解决方案是使用以下命令调整 DCTEncode 过滤器:

gswin64c.exe -sOutputFile=out.pdf -dNOPAUSE -dBATCH ^-sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -c "<< /ColorACSImageDict << /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor 0.08 /Blend 1 >> /ColorImageDownsampleType /Bicubic /ColorConversionStrategy /LeaveColorUnchanged >> setdistillerparams" -f in1.pdf

这导致压缩文件的质量令我满意,并且可以根据每个人的需要进行调整。

编辑:

最近的 ghostscript 版本(> 9.50)不推荐使用 .setpdfwrite 参数,所以我在答案中删除了它