【问题标题】:How to downsample images within PDF file?如何对 PDF 文件中的图像进行下采样?
【发布时间】:2012-03-18 19:42:00
【问题描述】:

需要基于 Java 的解决方案,或者最坏的情况是 Linux 的命令行。

我尝试使用 Ghostscript:

gs -sDEVICE=pdfwrite -dPDFA -dBATCH -dNOPAUSE -dUseCIEColor \
   -sProcessColorModel=DeviceCMYK -sPDFACompatibilityPolicy=1 \
   -sOutputFile=downgraded.pdf leon_range_my12_w22_brochure.pdf

但我有很多错误......

【问题讨论】:

  • 这些参数无论如何都不会对图像进行下采样。您使用的是什么版本的 GS,并且已将错误报告为错误? -dPDFA 开关需要额外的信息来创建您未提供的符合要求的 PDF/A 文件。可能“错误”实际上是警告......

标签: java linux pdf ghostscript


【解决方案1】:

这是一个示例,说明如何使用 Ghostscript 命令行将所有(彩色、灰色和单色)图像降采样到 72dpi:

gs \
  -o downsampled.pdf \
  -sDEVICE=pdfwrite \
  -dDownsampleColorImages=true \
  -dDownsampleGrayImages=true \
  -dDownsampleMonoImages=true \
  -dColorImageResolution=72 \
  -dGrayImageResolution=72 \
  -dMonoImageResolution=72 \
  -dColorImageDownsampleThreshold=1.0 \
  -dGrayImageDownsampleThreshold=1.0 \
  -dMonoImageDownsampleThreshold=1.0 \
   input.pdf

更新:
*ImageDownsampleThreshold=1.0 参数强制要求对分辨率高于 72 dpi 目标分辨率的所有图像进行下采样。如果未给出此参数(或设置为不同的值),将使用默认值:*ImageDownsampleThreshold=1.5。此默认值只会对 108 dpi(或更高)的图像进行下采样,而其他图像保持不变。

【讨论】:

  • @codin:评论不是为了讨论一个全新的话题。请提出一个新问题,将其标记为[ghostscript] + [pdf],我会尽力回答。还请说明您的请求的目的是什么。节省文件大小?删除图像中包含的信息?还是?
  • 谢谢库尔特,很好的回答!我试图将图像分辨率降低到 36,但输出文件的大小没有改变,即使其大小的 70% 来自第一页中的图像。知道为什么吗?
  • @GuidoWalterPettinari:如果无法访问 PDF 本身,我不会推测。也许您可以将以下答案应用于您的文件,以缩小占据其大部分字节的元素:stackoverflow.com/a/37858893/359307
  • 感谢库尔特,这是一个非常有用的资源!我不知道 Ghostscript 有一个简单的命令可以从 PDF 中删除图像。我会调查的。
  • @GuidoWalterPettinari:在 StackOverflow 上说 “谢谢” 的官方方式是为有用的答案投票 :-)
【解决方案2】:

这是我正在使用的:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=OUTPUT.pdf INPUT.pdf

供您参考:

-dPDFSETTINGS=/screen(仅屏幕查看质量,72 dpi 图像)

-dPDFSETTINGS=/ebook(低质量,150 dpi 图像)

-dPDFSETTINGS=/printer(高质量,300 dpi 图像)

-dPDFSETTINGS=/prepress(高质量、保色、300 dpi 图像)

-dPDFSETTINGS=/default(几乎等同于 /screen)

【讨论】:

    【解决方案3】:

    试试moonshiner,一个用于ghostscript 的GUI。

    【讨论】:

    • 虽然moonshiner 在2009 年5 个月的Sourceforge 开发活动中确实看起来很有希望,但现在它看起来像是一个死项目。自 2009 年 5 月以来没有更新...... :-(
    • @pipitas 我没有对moonshiner 做任何大的改动,主要是因为就我而言,它已经完成了。我同意缺乏活动使它看起来死气沉沉,但我至今仍在广泛使用它。我只是没有什么要补充的了:)
    • @balpha:您是否了解了同时获得的对 ICC 配置文件嵌入和 OutputIntents 处理 Ghostscript 的广泛支持?
    • @balpha:你可以在某处提到这个。
    【解决方案4】:

    对于每页都是全彩色图像的扫描文档,我使用了上面的命令行和我在不同站点上找到的另一个命令行的组合,

    gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \
    -dColorImageResolution=150 -dNOPAUSE  -dBATCH -sOutputFile=output.pdf input.pdf
    

    我的每一页都是文档的彩色扫描。此命令行将页面的分辨率降低到 150dpi,将文件大小减半,而不会显着降低分辨率。它看起来仍然不错,并且在我的 Nexus 7 上可以轻松阅读文本。

    【讨论】:

    • 你正在使用这个命令吗?如果您合并了上面发布的其他组合,请发布整个命令。我对无法正确缩小的彩色图像 pdf 有疑问。谢谢
    猜你喜欢
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多