我有一个单页PDF文件,看起来像this,它是6.3 MB。因为它最初似乎已经是灰度的,所以应用灰度应该不会有太大的不同。
但是当我通过以下方法将灰度应用于PDF时:
gs \
-sOutputFile=output.pdf \
-sDEVICE=pdfwrite \
-sColorConversionStrategy=Gray \
-dProcessColorModel=/DeviceGray \
-dCompatibilityLevel=1.4 \
-dNOPAUSE \
-dBATCH \
input.pdf
“ output.pdf”仅为128.4 kB,您可以看到新工件的存在。当PDF处于完整比例时,这些伪影并不明显,但是如果放大,则可以清楚地区分出差异。您可以看到灰度图像here.
在幻影脚本中会发生什么导致伪像?但更重要的是,是什么导致文件大小如此巨大的损失?
编辑:
我认为我夸大了输出文件中的工件。对于所有密集用途,文件看起来非常相似。
版本:GPL Ghostscript 9.23
这是原始的PDF文件:https://send.firefox.com/download/e47df175af/#tdZSodyN2CuQL8X0VIFC1g
这是灰度的PDF: https://send.firefox.com/download/a63b3d641c/#ce9Ctu6obfXlvvNZJvPnUA
我发现Smgd,Imgur压缩了原始PDF文件,因此使用托管服务商毫无意义。
答案 0 :(得分:3)
由于提供PNG图像而不是实际的PDF文件,因此任何人都无法确定您的问题是什么。如果您发布了PDF文件,我将可以查找并告诉您。
但是,我猜您正在使用旧版本的Ghostscript(同样也没有说),并且原始文件中的图像已进行DCT(JPEG)压缩。
由于未指定特定的压缩方法,因此pdfwrite设备(不是Ghostscript,而是写入PDF文件的Ghostscript设备)使用“自动”压缩。它使用不同的压缩滤镜多次写入图像数据,然后选择产生最小输出的图像数据。
几乎可以肯定,这将再次是DCT(JPEG)压缩滤波器,它几乎总是产生最小的输出。这也是默认的过滤器,如果您禁用了自动选择并且未指定要使用的其他压缩过滤器,则会使用该过滤器。
问题在于DCT是有损压缩,因此,每次对它进行解压缩和重新压缩时,都会失去保真度。虽然每次以字节为单位的图像大小确实会减小。
因此,这就是您获得两个结果的原因;压缩文物和尺寸减小的至少一部分。也可能是您的原始灰度图像实际上不是灰度而是RGB(或Lab或CalRGB或ICCBased ...),在这种情况下,将其转换为灰度将导致尺寸减小66%。没有看到文件我听不清。
请注意,当前版本的Ghostscript使用JPEG直通功能。如果不对图像进行降采样或更改其色彩空间,则不对图像进行解压缩。它原封不动地传递到输出设备,后者将其嵌入未更改。这避免了减压和重新压缩引入的伪像。
很显然,如果您想更改颜色空间,则pdfwrite设备确实必须处理图像,因此必须将其解压缩。
通过使用GrayImageFilter distiller参数,可以选择要使用的压缩过滤器,而不是允许自动选择,请参见here。