Как уменьшить размер файла PDF?

52

Я ищу способ в Ubuntu уменьшить размер PDF (за счет снижения качества изображений).

Я знаю, что это можно сделать в Ghostscript, набрав следующую команду в терминале:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

Проблема в том, что я не могу указать качество с какой-либо точностью. Параметр -dPDFSETTINGS=/screenтот, который определяет качество; но альтернативы довольно жесткие (например, это можно сделать -dPDFSETTINGS=/ebookдля чуть лучшего качества).

Я ищу способ уменьшить размер PDF таким образом, чтобы я мог указать желаемое качество численно.

Николь
источник
Вы можете проверить это Q & A аут.
Glutanimate
Это действительно дубликат!
hectorpal

Ответы:

58

Я смог немного изменить вашу команду, используя опцию -r300 из @drN Опция -r позволяет вам установить выходное разрешение как в pdf, так и в png.

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default \
    -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages \
    -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf
Талли
источник
7
Эта команда преобразовала 4-страничный PDF размером 25 МБ в почти такой же качественный, но 2 МБ. Ура!
Яник Рошон
Это работает с большинством файлов. Однако в некоторых случаях это фактически увеличивает размер файла. Похоже, что -rопция игнорируется в этих случаях.
Луис де Соуза
Эта команда израсходовала всю мою оперативную память (8 Гб) и заморозила мой ноутбук 1000-страничным PDF-файлом.
Делать
12

Эти два сообщения, которые я опубликовал в Stackoverflow, должны вам помочь. Я пытался уменьшить размер PDF-файлов, в то же время гарантируя, что они соответствуют определенным точкам на дюйм или точкам на дюйм для моей диссертации.

Уменьшение размера PDF с Ghostscript

Изменение pdf изображения в dpi с помощью gs

Вы пытались поиграться с convertLinux?

Редактировать:

gs \
  -o out300.png \
  -sDEVICE=pngalpha \
  -r300 \
   input.pdf

Если я правильно помню, r300это выход, dpiно вы можете проверить. Это преобразует PDF в PNG, хотя.

ИЛИ ЖЕ

convert -units PixelsPerInch myPic.pdf -density 300 fileout.pdf

Дайте нам знать, как это идет! Это для PDF или любого другого формата в любом другом формате. Я просто использовал входной файл myPic.pdf и выходной файл fileout.pdf

dearN
источник
Хм ... Я посмотрел на вопросы, с которыми вы связаны. Они интересны, но сложно выбрать конкретную команду, которую я должен использовать. Я ищу команду с каким-то числовым значением, с которым я могу играть, и это определит качество. Можете ли вы выполнить такую ​​команду? Можно ли сделать это с помощью конвертирования?
Николь
Я отредактировал свой ответ, включив в него несколько более простых вариантов. Посмотрите и дайте нам знать! :)
дорогойN
1
Преобразование увеличивает мой размер PDF, даже если я использую 100 точек на дюйм. Может быть, лучший выбор - конвертировать в png, используя «gs», а затем «convert», чтобы перейти в pdf?
Николь
@ Николь Всегда были проблемы с преобразованиями PDF. Для чего вы предлагаете использовать PDF?
дорогойN
@ Николь Я заметил, что для получения наилучшего результата для файлов pdfs / eps, мне нужно вернуться к программе, которая изначально создала pdf, и изменить параметры сохранения, чтобы сохранить в нужном мне формате dpi / ppi. Я надеюсь, что это помогает, и да, это может быть немного неприятно с обратной стороны.
дорогойN
12

Самый простой способ, который я нашел, - открыть файл PDF с исходным кодом с помощью LibreOffice Draw, а затем экспортировать в PDF с ожидаемым DPI. Диалоговое окно экспорта Draw позволяет вам указать DPI и другие параметры для экспортируемого PDF.

SeRReGA
источник
1
Я перепробовал все остальные вещи командной строки, но, в конце концов, это позволило мне увеличить сжатие, достаточное для моих целей.
Роджерс
1
Графический способ, с большим контролем.
Агменор
Я обнаружил, что LibreOffice Draw лучше печатает / экспортирует PDF, чем что-либо еще, так что +1.
Йорик
1
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=myNewFile.pdf myOldFile.pdf

Это самый простой способ, я думаю, можно уменьшить размер до 50 +/- кб. На вашем терминале перейдите в каталог с файлом: пример

cd ~/document/files

Затем введите приведенный выше код, где:

myNewFile.pdf

это новое имя файла и

myOldFile.pdf

это имя файла.

ConnelBLAZE
источник