pdf - pdf图像的ghostscript下采样,下采样因子错误

标签 pdf ghostscript downsampling

我发出以下命令:

gs \
-o downsampled.pdf \
-sDEVICE=pdfwrite \
-dDownsampleColorImages=true \
-dColorImageResolution=180 \
-dColorImageDownsampleThreshold=1.0 \

并得到以下错误:

Subsample filter does not support non-integer downsample factor (1.994360)
Failed to initialise downsample filter, downsampling aborted

(在某些页面上)

和:

Subsample filter does not support non-integer downsample factor (2.000029)
Failed to initialise downsample filter, downsampling aborted

最初我尝试将采样率降低到 150dpi,这给出了因子为 (2.40?????) 的错误,这意味着多个错误,其中最后几位数字对于不同的页面是不同的。所以我猜图像大约是 150*2.4 = 360 dpi。所以我尝试将采样率降低到 180。但图像似乎都略有偏差?

  1. 有没有办法指定因子而不是 dpi?
  2. 有没有办法“四舍五入”这个因素?

最佳答案

不,无法指定因子(这是蒸馏器参数的 Adob​​e 规范,我们目前仅限于这些)。如果不修改源代码,您也无法指定舍入的近似值。

您可以使用不同的下采样算法。

[很久以后]

其实我只是检查了当前的代码,你使用的一定是旧版本的Ghostscript。

当前默认的下采样过滤器是双三次过滤器,如果您强制使用子采样过滤器,则代码会检查请求的下采样因子是否为整数。

如果因子不是整数但在整数的 0.1 以内,则它强制因子为最接近的整数。

如果它在整数因子的 0.1 之外,则它会中止子样本过滤器并切换到双三次。

我建议升级。

[稍后编辑]

因此避免伪造的 ColorDownsampleOption,问题实际上根本不是彩色图像,它是单色图像,或者更准确地说,在您的情况下,图像掩码。

我设置了这个命令行:

gs 
    -sDEVICE=pdfwrite \
    -sOutputFile=pdfwrite.pdf \
    -dDownsampleColorImages=true \
    -dDownsampleGrayImages=true \
    -dDownsampleMonoImages=true \
    -dColorImageDownsampleThreshold=1 \
    -dGrayImageDownsampleThreshold=1 \
    -dMonoImageDownsampleThreshold=1 \
    -dColorImageDownsampleType=/Bicubic \
    -dGrayImageDownsampleType=/Bicubic \
    -dMonoImageDownsampleType=/Bicubic \
    -dColorImageResolution=72 \
    -dGrayImageResolution=72 \
    -dMonoImageResolution=100 "gs sample.pdf"

这会产生一条错误消息,指出唯一可用于单色图像的过滤器是 Subsample,然后是您引用的关于不精确因子的错误消息。

我想这基本上说明了我的观点,即示例文件对于调查问题非常重要。

所以那里有一个问题,我会调查它,显然对于单色图像,它应该被限制到最接近的整数分辨率,因为没有其他过滤器是可能的。但是,灰色和彩色图像确实可以按预期工作。

如我在早期评论中所建议的那样,报告错误可能会更快达到这一点。我仍然建议您这样做,以免忽视这一点。

您可能有兴趣注意到,对我来说,当我对单色图像进行下采样,但按照上面的命令行对其他图像进行下采样时,生成的文件是原始文件的 785KB为 2.5MB。

关于pdf - pdf图像的ghostscript下采样,下采样因子错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39937028/

相关文章:

python - 错误: unknown format: 3 (When trying to read audio wavfile)

c# - 使用 iText for .NET 替换 PDF 文件中的字符串

c# - 无法使用 RestSharp 下载 pdf?

pdf - 使用Ghostscript裁剪PDF/添加裁剪框

python - 如何将 .ps 文件转换为 .png 文件?

hadoop - pig 分层抽样?

Android 从 URL 下载 PDF,然后使用 PDF 阅读器打开它

html - 如何在 pdfmake 中创建表格页脚

python - 如何在不使用for循环的情况下对python中的数组进行下采样