How to downsample images within PDF file?

前端 未结 4 1092
無奈伤痛
無奈伤痛 2020-12-12 19:48

Need a Java-based solution or, at the worst, command-line for Linux.

I tried to use Ghostscript:

gs -sDEVICE=pdfwrite -dPDFA -dBATCH -dNOPAUSE -dUseC         


        
相关标签:
4条回答
  • 2020-12-12 20:03

    For a scanned document in which each page is a full color image, I used a combination of the command line above and another that I found on a different site,

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

    Each of my pages was a color scan of a document. This command line reduced the resolution of the pages to 150dpi, cutting the file size in half without significant loss of resolution. It's still looks good and the text is comfortably readable on my Nexus 7.

    0 讨论(0)
  • 2020-12-12 20:08

    This is what I am using:

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

    For your reference:

    -dPDFSETTINGS=/screen (screen-view-only quality, 72 dpi images)

    -dPDFSETTINGS=/ebook (low quality, 150 dpi images)

    -dPDFSETTINGS=/printer (high quality, 300 dpi images)

    -dPDFSETTINGS=/prepress (high quality, color preserving, 300 dpi imgs)

    -dPDFSETTINGS=/default (almost identical to /screen)

    0 讨论(0)
  • 2020-12-12 20:10

    Here's an example of how you can downsample all (color, gray and mono) images to 72dpi with a Ghostscript commandline:

    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
    

    Update:
    The *ImageDownsampleThreshold=1.0 parameters enforce that all Images with a resolution higher than the target resolution of 72 dpi will be downsampled. If this parameter is not given (or set to a different value), the default values will be used: *ImageDownsampleThreshold=1.5. This default value will only downsample images with a value of 108 dpi (or higher) and leave the other ones untouched.

    0 讨论(0)
  • 2020-12-12 20:12

    Try moonshiner, a GUI to ghostscript.

    0 讨论(0)
提交回复
热议问题