ghostscript pdfwrite指定jpeg质量

tri*_*bol 5 pdf-generation ghostscript

我正在尝试连接多个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
Run Code Online (Sandbox Code Playgroud)

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

tri*_*bol 5

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

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

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

  • 该命令的 `-c ".setpdfwrite ...` 部分似乎对我没有任何控制。压缩来自 `-dPDFSETTINGS=/prepress ` (2认同)