【发布时间】:2017-04-12 11:19:25
【问题描述】:
我正在尝试连接多个 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 图像质量的正确命令是什么?
【问题讨论】:
-
基本答案是“不要使用 JPEG”。 JPEG 是一种有损压缩方法,多个应用程序往往会相互干扰,从而进一步降低质量。如果原件是 JPEG,则在输出上强制使用 Flate 压缩而不是 DCT (JPEG)。 'JPEGQ' 开关特定于 JPEG 设备(如 te 文档中所述),因此对 pdfwrite 设备无效。您可以调整 DCT 编码,但您需要使用 PostScript 来调整 DCTEncode 过滤器。如果您想这样做,请参阅 PostScript 语言参考手册。
-
我认为这是一个完整的有效答案@KenS
-
通常我会在 DCTEncode 过滤器上添加信息,但我正在旅行......
-
嘿,非常感谢您的回答!它让我看起来更深,我通过
-dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode强制进行了 Flate 压缩。但是印刷厂不喜欢输出尺寸。所以我用以下命令调整了 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 -
@tribol 这真是太棒了!我使用您的设置将包含无损图像的 88 MB 文件缩小为包含有损但仍然高质量图像的 26 MB 文件。 30 MB 是我的限制,如果没有这些自定义选项,我只能得到一个 11 MB 的文件,其中的图像质量很差。
标签: pdf-generation ghostscript