当应用灰度时,ghostscript 如何压缩 PDF?



我有一个单页PDF看起来像这样,是6.3 MB。因为它似乎首先已经处于灰度状态,所以应用灰度应该不会产生太大的影响。

但是当我使用以下方法将灰度应用于 PDF 时:

gs 
-sOutputFile=output.pdf 
-sDEVICE=pdfwrite 
-sColorConversionStrategy=Gray 
-dProcessColorModel=/DeviceGray 
-dCompatibilityLevel=1.4 
-dNOPAUSE 
-dBATCH 
input.pdf

"输出.pdf"只有 128.4 kB,您可以看到新伪影的存在。 当PDF处于满比例时,伪像并不明显,但是如果您放大,则可以清楚地分辨出差异。您可以在此处看到灰度图像。

导致工件的 ghostscript 中发生了什么?但更重要的是,是什么导致了文件大小的急剧损失?

编辑:

我想我夸大了输出文件中的工件。对于所有密集目的,这些文件看起来非常相似。

版本: GPL 代字稿 9.23

以下是原始PDF文件: https://send.firefox.com/download/e47df175af/#tdZSodyN2CuQL8X0VIFC1g

以下是灰度 PDF: https://send.firefox.com/download/a63b3d641c/#ce9Ctu6obfXlvvNZJvPnUA

我发现Sribd,Imgur压缩了原始PDF文件,因此使用主机没有意义。

提供 PNG 图像,而不是实际的 PDF 文件,使任何人都无法确定您的问题是什么。如果你发布了PDF文件,我可以查看并告诉你。

但是,我猜您使用的是旧版本的Ghostscript(您再次没有说(,并且原始文件中的图像是DCT(JPEG(压缩的。

由于您尚未指定特定的压缩方法,因此pdfwrite设备(不是Ghostscript,而是写入PDF文件的Ghostscript设备(使用"自动"压缩。它使用不同的压缩过滤器多次写入图像数据,并选择产生最小输出的滤波器。

几乎可以肯定的是,这将再次成为DCT(JPEG(压缩滤波器,它几乎总是产生最小的输出。这也是默认筛选器,如果禁用自动选择并且未指定要使用的其他压缩筛选器,则使用默认筛选器。

问题是DCT是一种有损压缩,所以每次解压缩和重新压缩它时,你都会失去保真度。尽管以字节为单位的图像大小每次都会减小。

所以这就是你的结果的原因;压缩伪影和至少部分尺寸的减小。也可能是原始灰度图像实际上不是灰色而是RGB(或Lab或CalRGB,或ICCBased...(,在这种情况下,将其转换为灰度将导致大小减小66%。没有看到文件我无法分辨。

请注意,当前版本的 Ghostscript 使用 JPEG 直通功能。如果图像未被缩减像素采样或更改其色彩空间,则不会解压缩图像。它原封不动地传递给输出设备,输出设备又原封不动地嵌入它。这避免了减压和再压缩引入的伪影。

显然,如果你想改变色彩空间,那么pdfwrite设备必须操纵图像,所以它必须解压缩它。

您可以使用 GrayImageFilter 蒸馏器参数选择要使用的压缩过滤器,而不是允许自动选择,请参阅此处。

最新更新