如何在PDF文件中对图像进行下采样?

时间:2012-02-29 10:08:53

标签: java linux pdf ghostscript

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

我尝试使用Ghostscript:

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

但是我犯了很多错误......

4 个答案:

答案 0 :(得分:38)

以下是如何使用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(或更高)值的图像进行下采样,并保持其他图像不受影响。

答案 1 :(得分:14)

这就是我正在使用的:

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 = /印前(高品质,保色,300 dpi imgs)

-dPDFSETTINGS = / default(几乎与/ screen相同)

答案 2 :(得分:3)

尝试moonshiner,一个ghostscript的GUI。

答案 3 :(得分:2)

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

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

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