如何使用 ghostscript 修改 PDF 文件中的 JPEG 压缩
How to modify JPEG compression in PDF files using ghostscript
我想减小 PDF 文件的大小,不仅要降低图像 DPI,还要改变 JPEG 压缩的质量设置。
首先我尝试了:
gs -dNOPAUSE -dQUIET -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/screen \
-dColorImageResolution=120 -dGrayImageResolution=120 \
-dUseFlateCompression=false -sOutputFile=test1.pdf \
-c "<< /GrayImageDict << /Blend 1 /VSamples [1 1 1 1] /QFactor 0.1 /HSamples [1 1 1 1] >> /ColorImageDict << /Blend 1 /VSamples [1 1 1 1] /QFactor 0.1 /HSamples [1 1 1 1] >> >> setdistillerparams " \
-f test.ps
其次,我更改了 Gray- / ColorImageDict 条目并尝试:
gs -dNOPAUSE -dQUIET -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/screen \
-dColorImageResolution=120 -dGrayImageResolution=120 \
-dUseFlateCompression=false -sOutputFile=test2.pdf \
-c "<< /GrayImageDict << /Blend 1 /VSamples [2 1 1 2] /QFactor 2.4 /HSamples [2 1 1 2] >> /ColorImageDict << /Blend 1 /VSamples [2 1 1 2] /QFactor 2.4 /HSamples [2 1 1 2] >> >> setdistillerparams " \
-f test.ps
但是两个命令的结果在大小上是相同的。
有什么错误/误解或如何增加 JPEG 压缩率的建议吗?
(版本:GPL Ghostscript 9.16)
最好共享示例文件和命令留置权,以便其他人可以重现您的发现。没有它,就不可能说出你为什么会得到现在的结果。
您的命令行不理想。您已经使用了一种罐装 PDFSETTINGS,如果我是您,我不会那样做。使用默认值并更改您想要更改的那些。您混合使用命令行开关和 PostScript 调用 setdistillerparams。最好只使用 setdistillerparams。
最可能的原因是您没有在输出中获得 JPEG,请注意您没有禁用自动过滤器选择。如 distiller params 文档中所述,UseFlateCompression 仅影响页面压缩,不影响图像,并且无论如何在 Ghostscript 中固定为 true(请参阅 Ghostscript 文档)。将其设置为 false 没有任何作用。
所以我建议您 post 一个示例文件,我们从那里获取它。
哦,你应该使用当前版本,9.16 已经 2 岁了。
我想减小 PDF 文件的大小,不仅要降低图像 DPI,还要改变 JPEG 压缩的质量设置。
首先我尝试了:
gs -dNOPAUSE -dQUIET -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/screen \
-dColorImageResolution=120 -dGrayImageResolution=120 \
-dUseFlateCompression=false -sOutputFile=test1.pdf \
-c "<< /GrayImageDict << /Blend 1 /VSamples [1 1 1 1] /QFactor 0.1 /HSamples [1 1 1 1] >> /ColorImageDict << /Blend 1 /VSamples [1 1 1 1] /QFactor 0.1 /HSamples [1 1 1 1] >> >> setdistillerparams " \
-f test.ps
其次,我更改了 Gray- / ColorImageDict 条目并尝试:
gs -dNOPAUSE -dQUIET -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/screen \
-dColorImageResolution=120 -dGrayImageResolution=120 \
-dUseFlateCompression=false -sOutputFile=test2.pdf \
-c "<< /GrayImageDict << /Blend 1 /VSamples [2 1 1 2] /QFactor 2.4 /HSamples [2 1 1 2] >> /ColorImageDict << /Blend 1 /VSamples [2 1 1 2] /QFactor 2.4 /HSamples [2 1 1 2] >> >> setdistillerparams " \
-f test.ps
但是两个命令的结果在大小上是相同的。
有什么错误/误解或如何增加 JPEG 压缩率的建议吗?
(版本:GPL Ghostscript 9.16)
最好共享示例文件和命令留置权,以便其他人可以重现您的发现。没有它,就不可能说出你为什么会得到现在的结果。
您的命令行不理想。您已经使用了一种罐装 PDFSETTINGS,如果我是您,我不会那样做。使用默认值并更改您想要更改的那些。您混合使用命令行开关和 PostScript 调用 setdistillerparams。最好只使用 setdistillerparams。
最可能的原因是您没有在输出中获得 JPEG,请注意您没有禁用自动过滤器选择。如 distiller params 文档中所述,UseFlateCompression 仅影响页面压缩,不影响图像,并且无论如何在 Ghostscript 中固定为 true(请参阅 Ghostscript 文档)。将其设置为 false 没有任何作用。
所以我建议您 post 一个示例文件,我们从那里获取它。
哦,你应该使用当前版本,9.16 已经 2 岁了。