Как уменьшить изображения в файле PDF? - PullRequest
23 голосов
/ 29 февраля 2012

Требуется решение на основе Java или, в худшем случае, командная строка для Linux.

Я пытался использовать Ghostscript:

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

но я получил много ошибок ...

Ответы [ 4 ]

38 голосов
/ 05 марта 2012

Вот пример того, как вы можете уменьшить частоту всех (цветных, серых и моно) изображений до 72 точек на дюйм с помощью командной строки Ghostscript:

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 обеспечивают, что all Изображения с разрешением выше целевого разрешения 72 dpi будут подвергаться понижающей дискретизации. Если этот параметр не задан (или установлен на другое значение), будут использоваться значения по умолчанию: *ImageDownsampleThreshold=1.5. Это значение по умолчанию будет только уменьшать выборку изображений со значением 108 точек на дюйм (или выше) и оставит другие нетронутыми.

14 голосов
/ 01 апреля 2012

Это то, что я использую:

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

Для справки:

-dPDFSETTINGS = / screen (качество только для экрана, 72 dpiизображения)

-dPDFSETTINGS = / электронная книга (низкое качество, изображения с разрешением 150 точек на дюйм)

-dPDFSETTINGS = / принтер (высокое качество, изображения с разрешением 300 точек на дюйм)

-dPDFSETTINGS = /допечатная подготовка (высокое качество, сохранение цвета, изображения с разрешением 300 dpi)

-dPDFSETTINGS = / по умолчанию (почти идентично / screen)

3 голосов
/ 29 февраля 2012

Попробуйте moonshiner , графический интерфейс для ghostscript.

2 голосов
/ 19 января 2014

Для отсканированного документа, в котором каждая страница представляет собой полноцветное изображение, я использовал комбинацию командной строки выше и другой, которую я нашел на другом сайте,

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

Каждая из моих страниц былацветное сканирование документа.Эта командная строка снизила разрешение страниц до 150 точек на дюйм, сократив размер файла вдвое без значительной потери разрешения.Это все еще выглядит хорошо, и текст удобно читается на моем Nexus 7.

...