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

Вопрос или проблема

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

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

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

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

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

Мне удалось немного изменить вашу команду, успешно используя опцию -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

Редактировать: В новых версиях gs синтаксис теперь короче:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default \
    -dQUIET -dDetectDuplicateImages \
    -dCompressFonts=true -r150 -o output.pdf input.pdf

Спасибо @pierre-adrien

Для высококачественных сканирований, уменьшение выходного разрешения может быть полезно использовать /printer вместо /default для значения -dPDFSETTINGS.

Дополнительную документацию можно найти здесь: https://web.mit.edu/ghostscript/www/Ps2pdf.htm#Options

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

Окно диалога экспорта Draw позволяет вам задать DPI и другие параметры для экспортируемого PDF.

Эти два сообщения, которые я опубликовал на Stackoverflow, должны вам помочь. Я пытался уменьшить размер pdf, обеспечивая, чтобы они соответствовали определенному dpi или ppi для моей диссертации.

Уменьшение размера pdf с помощью ghostscript

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

Вы пробовали поиграть с convert в Linux?

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

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

Если уменьшение размера файла является вашей основной целью (и не только уменьшение размера фигур и также не для указания качества численно), как насчет ps2pdf:

ps2pdf input.pdf output.pdf

В зависимости от характеристик PDF, это может уменьшить размер файла на порядок.

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

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

cd ~/document/files

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

myNewFile.pdf

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

myOldFile.pdf

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

Вы можете использовать команду gs, как предложили другие, но убедитесь, что вы изменили dPDFSETTINGS на screen, для изображений низкого качества (75 dpi), или ebook, для 150 dpi.

Вот полный список dPDFSETTINGS, из которых можно выбрать (основанный на этой ссылке):

  • -dPDFSETTINGS=/screen — Низкое качество и небольшой размер при 72dpi.

  • -dPDFSETTINGS=/ebook — Чуть лучшее качество, но также больший размер файла при 150dpi.

  • -dPDFSETTINGS=/prepress — Высокое качество и большой размер при 300 dpi.

_ -dPDFSETTINGS=/default — Система выбирает лучший вывод, что может создать более крупные PDF-файлы.

Вы используете команду, подобную следующей:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \                                                                                                                                     
    -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages \
    -dCompressFonts=true -sOutputFile=output.pdf input.pdf 

Из мого ответа на похожий вопрос Unix & Linux Stack Exchange:

Если PDF-файл состоит полностью из данных изображения;

pdftk inputFile.pdf burst
mogrify -density 300 -format jpg -quality 20 pg_*.pdf
convert *.jpg -auto-orient outputFile.pdf

Значение плотности может соответствовать плотности исходного изображения (например, 300 dpi), но качество jpeg должно быть ниже, чем у исходного изображения (например, 20).

Вы можете использовать ocrmypdf с флагом --oversample <DPI>, чтобы уменьшить размер pdf.

Например:

ocrmypdf --skip-text --oversample 150 input.pdf output.pdf

Я обычно делаю так:

ocrmypdf --skip-text --oversample 150 input.pdf input.pdf

чтобы сэкономить время на переименовании pdf-файла. Я выбрал dpi равным 150 как ссылку на ghostscript с флагом -dPDFSETTINGS=/ebook.

pdf2ps large.pdf very_large.ps
ps2pdf very_large.ps small.pdf

Вы также можете открыть в gimp как слои, экспортировать в pdf снова как слои – это превратило pdf размером 1 МБ в 275 Кб для меня.

Ответ или решение

Краткий ответ на вопрос о том, как уменьшить размер PDF-файла в Ubuntu, заключается в том, чтобы использовать различные инструменты и подходы, такие как Ghostscript, LibreOffice Draw и другие команды. Основной акцент делается на возможности настройки качества изображений, что позволяет пользователям контролировать результат.

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

1. Использование Ghostscript

Ghostscript является мощным инструментом для работы с PDF-файлами. Вы можете использовать следующие команды для уменьшения размера файла, при этом задав желаемое разрешение (DPI):

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -o output.pdf input.pdf
  • -r150: Устанавливает разрешение выходного PDF на 150 DPI.
  • -dPDFSETTINGS: Позволяет выбирать качество. Значения, которые можно использовать:
    • /screen: низкое качество (примерно 72 DPI)
    • /ebook: среднее качество (примерно 150 DPI)
    • /printer: высокое качество (примерно 300 DPI)

2. Использование LibreOffice Draw

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

3. Использование утилиты pdftk и convert

Если ваш PDF-файл состоит в основном из растровых изображений, вы можете воспользоваться следующей последовательностью команд:

pdftk inputFile.pdf burst
mogrify -density 300 -format jpg -quality 20 pg_*.pdf
convert *.jpg -auto-orient outputFile.pdf

Здесь:

  • mogrify: Уменьшает качество изображений до 20%.
  • convert: Собирает обработанные изображения обратно в PDF.

4. OCRmyPDF

Также можно использовать ocrmypdf для уменьшения размера PDF через переупаковку:

ocrmypdf --skip-text --oversample 150 input.pdf output.pdf

Этот подход поможет сохранить текст в PDF с меньшим размером файла.

5. Альтернативные инструменты

  • GIMP: Откройте PDF в GIMP как слои, а затем экспортируйте его обратно в PDF. Это может значительно сократить размер файла.
  • ps2pdf: Для быстрого уменьшения размера файла, примените следующую команду:
    ps2pdf input.pdf output.pdf

Заключение

Существует множество подходов к уменьшению размера PDF-файлов в Ubuntu. Выбор инструмента зависит от ваших задач, желаемого контроля над качеством и удобства использования. Ghostscript предоставляет мощные функции для настройки разрешения и качества, в то время как решения, такие как LibreOffice и GIMP, предлагают более визуальные методы работы с PDF. Не забывайте экспериментировать с различными параметрами, чтобы найти оптимальное решение для своих нужд.

Оцените материал
Добавить комментарий

Капча загружается...